1fcf3ce44SJohn Forte /* 2fcf3ce44SJohn Forte * ***************************************************************************** 3fcf3ce44SJohn Forte * 4fcf3ce44SJohn Forte * Description 5fcf3ce44SJohn Forte * hbaapi.h - general header file for client 6fcf3ce44SJohn Forte * and library developers 7fcf3ce44SJohn Forte * 8fcf3ce44SJohn Forte * License: 9fcf3ce44SJohn Forte * The contents of this file are subject to the SNIA Public License 10fcf3ce44SJohn Forte * Version 1.0 (the "License"); you may not use this file except in 11fcf3ce44SJohn Forte * compliance with the License. You may obtain a copy of the License at 12fcf3ce44SJohn Forte * 13fcf3ce44SJohn Forte * /http://www.snia.org/English/Resources/Code/OpenSource.html 14fcf3ce44SJohn Forte * 15fcf3ce44SJohn Forte * Software distributed under the License is distributed on an "AS IS" 16fcf3ce44SJohn Forte * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 17fcf3ce44SJohn Forte * the License for the specific language governing rights and limitations 18fcf3ce44SJohn Forte * under the License. 19fcf3ce44SJohn Forte * 20fcf3ce44SJohn Forte * The Original Code is SNIA HBA API general header file 21fcf3ce44SJohn Forte * 22fcf3ce44SJohn Forte * The Initial Developer of the Original Code is: 23fcf3ce44SJohn Forte * Benjamin F. Kuo, Troika Networks, Inc. (benk@troikanetworks.com) 24fcf3ce44SJohn Forte * 25fcf3ce44SJohn Forte * Contributor(s): 26fcf3ce44SJohn Forte * Tuan Lam, QLogic Corp. (t_lam@qlc.com) 27fcf3ce44SJohn Forte * Dan Willie, Emulex Corp. (Dan.Willie@emulex.com) 28fcf3ce44SJohn Forte * Dixon Hutchinson, Legato Systems, Inc. (dhutchin@legato.com) 29fcf3ce44SJohn Forte * David Dillard, VERITAS Software Corp. (david.dillard@veritas.com) 30fcf3ce44SJohn Forte * 31fcf3ce44SJohn Forte ******************************************************************************* 32fcf3ce44SJohn Forte * 33fcf3ce44SJohn Forte * Changes: 34fcf3ce44SJohn Forte * 03/09/2000 Initial Draft 35fcf3ce44SJohn Forte * (for other changes... see the CVS logs) 36fcf3ce44SJohn Forte ******************************************************************************* 37fcf3ce44SJohn Forte */ 38fcf3ce44SJohn Forte 39*bb63f56eSSukumar Swaminathan #ifndef _EMLXS_HBAAPI_H 40*bb63f56eSSukumar Swaminathan #define _EMLXS_HBAAPI_H 41*bb63f56eSSukumar Swaminathan 42fcf3ce44SJohn Forte #ifdef __cplusplus 43fcf3ce44SJohn Forte extern "C" { 44fcf3ce44SJohn Forte #endif 45fcf3ce44SJohn Forte 46fcf3ce44SJohn Forte /* Library version string */ 47fcf3ce44SJohn Forte #define HBA_LIBVERSION 2 48fcf3ce44SJohn Forte 49fcf3ce44SJohn Forte /* DLL imports for WIN32 operation */ 50fcf3ce44SJohn Forte #ifdef WIN32 51fcf3ce44SJohn Forte #ifdef HBAAPI_EXPORTS 52fcf3ce44SJohn Forte #define HBA_API __declspec(dllexport) 53fcf3ce44SJohn Forte #else 54fcf3ce44SJohn Forte #define HBA_API __declspec(dllimport) 55fcf3ce44SJohn Forte #endif 56fcf3ce44SJohn Forte #else 57fcf3ce44SJohn Forte #define HBA_API 58fcf3ce44SJohn Forte #endif 59fcf3ce44SJohn Forte 60fcf3ce44SJohn Forte /* OS specific definitions */ 61fcf3ce44SJohn Forte 62fcf3ce44SJohn Forte #ifdef WIN32 63fcf3ce44SJohn Forte typedef unsigned char HBA_UINT8; // Unsigned 8 bits 64fcf3ce44SJohn Forte typedef char HBA_INT8; // Signed 8 bits 65fcf3ce44SJohn Forte typedef unsigned short HBA_UINT16; // Unsigned 16 bits 66fcf3ce44SJohn Forte typedef short HBA_INT16; // Signed 16 bits 67fcf3ce44SJohn Forte typedef unsigned int HBA_UINT32; // Unsigned 32 bits 68fcf3ce44SJohn Forte typedef int HBA_INT32; // Signed 32 bits 69fcf3ce44SJohn Forte typedef void* HBA_PVOID; // Pointer to void 70fcf3ce44SJohn Forte typedef HBA_UINT32 HBA_VOID32; // Opaque 32 bits 71fcf3ce44SJohn Forte 72fcf3ce44SJohn Forte 73fcf3ce44SJohn Forte /* Don't confuse, _WIN32 with WIN32... OK, how do you accompish that */ 74fcf3ce44SJohn Forte #ifdef _WIN32 75fcf3ce44SJohn Forte typedef _int64 HBA_INT64; 76fcf3ce44SJohn Forte typedef unsigned _int64 HBA_UINT64; 77fcf3ce44SJohn Forte #else 78fcf3ce44SJohn Forte typedef struct { 79fcf3ce44SJohn Forte TN_UINT32 lo_val; 80fcf3ce44SJohn Forte TN_UINT32 hi_val; 81fcf3ce44SJohn Forte } HBA_INT64; 82fcf3ce44SJohn Forte 83fcf3ce44SJohn Forte typedef struct { 84fcf3ce44SJohn Forte TN_UINT32 lo_val; 85fcf3ce44SJohn Forte TN_UINT32 hi_val; 86fcf3ce44SJohn Forte } HBA_UINT64; 87fcf3ce44SJohn Forte #endif /* #ifdef _WIN32 */ 88fcf3ce44SJohn Forte 89fcf3ce44SJohn Forte 90fcf3ce44SJohn Forte #else 91fcf3ce44SJohn Forte #ifndef _KERNEL 92fcf3ce44SJohn Forte #include <time.h> /* Needed for struct tm */ 93fcf3ce44SJohn Forte #endif /* ifndef _KERNEL */ 94fcf3ce44SJohn Forte 95fcf3ce44SJohn Forte /* Note this section needs to be cleaned up for various Unix platforms */ 96fcf3ce44SJohn Forte typedef unsigned char HBA_UINT8; /* Unsigned 8 bits */ 97fcf3ce44SJohn Forte typedef char HBA_INT8; /* Signed 8 bits */ 98fcf3ce44SJohn Forte typedef unsigned short HBA_UINT16; /* Unsigned 16 bits */ 99fcf3ce44SJohn Forte typedef short HBA_INT16; /* Signed 16 bits */ 100fcf3ce44SJohn Forte typedef unsigned int HBA_UINT32; /* Unsigned 32 bits */ 101fcf3ce44SJohn Forte typedef int HBA_INT32; /* Signed 32 bits */ 102fcf3ce44SJohn Forte typedef void* HBA_PVOID; /* Pointer to void */ 103fcf3ce44SJohn Forte typedef HBA_UINT32 HBA_VOID32; /* Opaque 32 bits */ 104fcf3ce44SJohn Forte typedef long long HBA_INT64; 105fcf3ce44SJohn Forte typedef long long HBA_UINT64; 106fcf3ce44SJohn Forte 107fcf3ce44SJohn Forte #endif /* #ifdef WIN32 */ 108fcf3ce44SJohn Forte 109fcf3ce44SJohn Forte 110fcf3ce44SJohn Forte /* 4.2.1 Handle to Device */ 111fcf3ce44SJohn Forte typedef HBA_UINT32 HBA_HANDLE; 112fcf3ce44SJohn Forte 113fcf3ce44SJohn Forte #define HBA_HANDLE_INVALID 0 114fcf3ce44SJohn Forte 115fcf3ce44SJohn Forte /* 4.2.2 Status Return Values */ 116fcf3ce44SJohn Forte typedef HBA_UINT32 HBA_STATUS; 117fcf3ce44SJohn Forte 118fcf3ce44SJohn Forte #define HBA_STATUS_OK 0 119fcf3ce44SJohn Forte #define HBA_STATUS_ERROR 1 /* Error */ 120fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_NOT_SUPPORTED 2 /* Function not supported.*/ 121fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_INVALID_HANDLE 3 /* invalid handle */ 122fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_ARG 4 /* Bad argument */ 123fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_ILLEGAL_WWN 5 /* WWN not recognized */ 124fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_ILLEGAL_INDEX 6 /* Index not recognized */ 125fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_MORE_DATA 7 /* Larger buffer required */ 126fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_STALE_DATA 8 /* Information has changed since 127fcf3ce44SJohn Forte * last call to 128fcf3ce44SJohn Forte * HBA_Refreshinformation */ 129fcf3ce44SJohn Forte #define HBA_STATUS_SCSI_CHECK_CONDITION 9 /* Obvious */ 130fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_BUSY 10 /* Adapter busy or reserved, 131fcf3ce44SJohn Forte * retry may be effective */ 132fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_TRY_AGAIN 11 /* Request timedout, 133fcf3ce44SJohn Forte * retry may be effective */ 134fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_UNAVAILABLE 12 /* Referenced HBA has been removed 135fcf3ce44SJohn Forte * or deactivated */ 136fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_ELS_REJECT 13 /* The requested ELS was rejected by 137fcf3ce44SJohn Forte * the local adapter */ 138fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_INVALID_LUN 14 /* The specified LUN is not provided 139fcf3ce44SJohn Forte * the specified adapter */ 140fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_INCOMPATIBLE 15 /* An incompatibility has been 141fcf3ce44SJohn Forte * detected among the library and driver modules 142fcf3ce44SJohn Forte * invoked which will cause one or more functions 143fcf3ce44SJohn Forte * in the highest version that all support to 144fcf3ce44SJohn Forte * operate incorrectly. The differing function 145fcf3ce44SJohn Forte * sets of software modules implementing different 146fcf3ce44SJohn Forte * versions of the HBA API specification does not 147fcf3ce44SJohn Forte * in itself constitute an incompatibility. Known 148fcf3ce44SJohn Forte * interoperability bugs among supposedly 149fcf3ce44SJohn Forte * compatible versions should be reported as 150fcf3ce44SJohn Forte * incompatibilities, but not all such 151fcf3ce44SJohn Forte * interoperability bugs may be known. This value 152fcf3ce44SJohn Forte * may be returned by any function that calls a 153fcf3ce44SJohn Forte * Vendor Specific Library and returns an 154fcf3ce44SJohn Forte * HBA_STATUS, and by HBA_LoadLibrary and 155fcf3ce44SJohn Forte * HBA_GetAdapterName. */ 156fcf3ce44SJohn Forte 157fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_AMBIGUOUS_WWN 16 /* Multiple adapters have a matching 158fcf3ce44SJohn Forte * WWN. This could occur if the 159fcf3ce44SJohn Forte * NodeWWN of multiple adapters is 160fcf3ce44SJohn Forte * identical */ 161fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_LOCAL_BUS 17 /* A persistent binding request 162fcf3ce44SJohn Forte * included a bad local SCSI bus 163fcf3ce44SJohn Forte * number */ 164fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_LOCAL_TARGET 18 /* A persistent binding request 165fcf3ce44SJohn Forte * included a bad local SCSI target 166fcf3ce44SJohn Forte * number */ 167fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_LOCAL_LUN 19 /* A persistent binding request 168fcf3ce44SJohn Forte * included a bad local SCSI logical 169fcf3ce44SJohn Forte * unit number */ 170fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_LOCAL_SCSIID_BOUND 20 171fcf3ce44SJohn Forte /* A persistent binding set request 172fcf3ce44SJohn Forte * included a local SCSI ID that was 173fcf3ce44SJohn Forte * already bound */ 174fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_TARGET_FCID 21 /* A persistent binding request 175fcf3ce44SJohn Forte * included a bad or unlocatable FCP 176fcf3ce44SJohn Forte * Target FCID */ 177fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_TARGET_NODE_WWN 22 /* A persistent binding request 178fcf3ce44SJohn Forte * included a bad FCP Target Node 179fcf3ce44SJohn Forte * WWN */ 180fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_TARGET_PORT_WWN 23 /* A persistent binding request 181fcf3ce44SJohn Forte * included a bad FCP Target Port 182fcf3ce44SJohn Forte * WWN */ 183fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_TARGET_LUN 24 /* A persistent binding request 184fcf3ce44SJohn Forte * included an FCP Logical Unit Number 185fcf3ce44SJohn Forte * not defined by the identified 186fcf3ce44SJohn Forte * Target*/ 187fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_TARGET_LUID 25 /* A persistent binding request 188fcf3ce44SJohn Forte * included an undefined or otherwise 189fcf3ce44SJohn Forte * inaccessible Logical Unit Unique 190fcf3ce44SJohn Forte * Identifier */ 191fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_NO_SUCH_BINDING 26 /* A persistent binding remove request 192fcf3ce44SJohn Forte * included a binding which did not 193fcf3ce44SJohn Forte * match a binding established by the 194fcf3ce44SJohn Forte * specified port */ 195fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_NOT_A_TARGET 27 /* A SCSI command was requested to an 196fcf3ce44SJohn Forte * Nx_Port that was not a SCSI 197fcf3ce44SJohn Forte * Target Port */ 198fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_UNSUPPORTED_FC4 28 /* A request was made concerning an 199fcf3ce44SJohn Forte * unsupported FC-4 protocol */ 200fcf3ce44SJohn Forte 201fcf3ce44SJohn Forte 202fcf3ce44SJohn Forte #define HBA_STATUS_ERROR_INCAPABLE 29 /* A request was made to enable 203fcf3ce44SJohn Forte * unimplemented capabilities for a 204fcf3ce44SJohn Forte * port */ 205fcf3ce44SJohn Forte 206fcf3ce44SJohn Forte /* 4.2.3 Port Operational Modes Values */ 207fcf3ce44SJohn Forte typedef HBA_UINT32 HBA_PORTTYPE; 208fcf3ce44SJohn Forte 209fcf3ce44SJohn Forte #define HBA_PORTTYPE_UNKNOWN 1 /* Unknown */ 210fcf3ce44SJohn Forte #define HBA_PORTTYPE_OTHER 2 /* Other */ 211fcf3ce44SJohn Forte #define HBA_PORTTYPE_NOTPRESENT 3 /* Not present */ 212fcf3ce44SJohn Forte #define HBA_PORTTYPE_NPORT 5 /* Fabric */ 213fcf3ce44SJohn Forte #define HBA_PORTTYPE_NLPORT 6 /* Public Loop */ 214fcf3ce44SJohn Forte #define HBA_PORTTYPE_FLPORT 7 215fcf3ce44SJohn Forte #define HBA_PORTTYPE_FPORT 8 /* Fabric Port */ 216fcf3ce44SJohn Forte #define HBA_PORTTYPE_EPORT 9 /* Fabric expansion port */ 217fcf3ce44SJohn Forte #define HBA_PORTTYPE_GPORT 10 /* Generic Fabric Port */ 218fcf3ce44SJohn Forte #define HBA_PORTTYPE_LPORT 20 /* Private Loop */ 219fcf3ce44SJohn Forte #define HBA_PORTTYPE_PTP 21 /* Point to Point */ 220fcf3ce44SJohn Forte 221fcf3ce44SJohn Forte 222fcf3ce44SJohn Forte typedef HBA_UINT32 HBA_PORTSTATE; 223fcf3ce44SJohn Forte #define HBA_PORTSTATE_UNKNOWN 1 /* Unknown */ 224fcf3ce44SJohn Forte #define HBA_PORTSTATE_ONLINE 2 /* Operational */ 225fcf3ce44SJohn Forte #define HBA_PORTSTATE_OFFLINE 3 /* User Offline */ 226fcf3ce44SJohn Forte #define HBA_PORTSTATE_BYPASSED 4 /* Bypassed */ 227fcf3ce44SJohn Forte #define HBA_PORTSTATE_DIAGNOSTICS 5 /* In diagnostics mode */ 228fcf3ce44SJohn Forte #define HBA_PORTSTATE_LINKDOWN 6 /* Link Down */ 229fcf3ce44SJohn Forte #define HBA_PORTSTATE_ERROR 7 /* Port Error */ 230fcf3ce44SJohn Forte #define HBA_PORTSTATE_LOOPBACK 8 /* Loopback */ 231fcf3ce44SJohn Forte 232fcf3ce44SJohn Forte 233fcf3ce44SJohn Forte typedef HBA_UINT32 HBA_PORTSPEED; 234fcf3ce44SJohn Forte #define HBA_PORTSPEED_UNKNOWN 0 /* Unknown - transceiver incable 235fcf3ce44SJohn Forte * of reporting */ 236fcf3ce44SJohn Forte #define HBA_PORTSPEED_1GBIT 1 /* 1 GBit/sec */ 237fcf3ce44SJohn Forte #define HBA_PORTSPEED_2GBIT 2 /* 2 GBit/sec */ 238fcf3ce44SJohn Forte #define HBA_PORTSPEED_10GBIT 4 /* 10 GBit/sec */ 239fcf3ce44SJohn Forte #define HBA_PORTSPEED_4GBIT 8 /* 4 GBit/sec */ 240fcf3ce44SJohn Forte #define HBA_PORTSPEED_8GBIT 16 /* 8 GBit/sec */ 241fcf3ce44SJohn Forte #define HBA_PORTSPEED_16GBIT 32 /* 16 GBit/sec */ 242fcf3ce44SJohn Forte #define HBA_PORTSPEED_NOT_NEGOTIATED (1<<15) /* Speed not established */ 243fcf3ce44SJohn Forte 244fcf3ce44SJohn Forte 245fcf3ce44SJohn Forte 246fcf3ce44SJohn Forte /* 4.2.4 Class of Service Values - See GS-2 Spec.*/ 247fcf3ce44SJohn Forte 248fcf3ce44SJohn Forte typedef HBA_UINT32 HBA_COS; 249fcf3ce44SJohn Forte 250fcf3ce44SJohn Forte 251fcf3ce44SJohn Forte /* 4.2.5 Fc4Types Values */ 252fcf3ce44SJohn Forte 253fcf3ce44SJohn Forte typedef struct HBA_fc4types { 254fcf3ce44SJohn Forte HBA_UINT8 bits[32]; /* 32 bytes of FC-4 per GS-2 */ 255fcf3ce44SJohn Forte } HBA_FC4TYPES, *PHBA_FC4TYPES; 256fcf3ce44SJohn Forte 257fcf3ce44SJohn Forte /* 4.2.6 Basic Types */ 258fcf3ce44SJohn Forte 259fcf3ce44SJohn Forte typedef struct HBA_wwn { 260fcf3ce44SJohn Forte HBA_UINT8 wwn[8]; 261fcf3ce44SJohn Forte } HBA_WWN, *PHBA_WWN; 262fcf3ce44SJohn Forte 263fcf3ce44SJohn Forte typedef struct HBA_ipaddress { 264fcf3ce44SJohn Forte int ipversion; /* see enumerations in RNID */ 265fcf3ce44SJohn Forte union 266fcf3ce44SJohn Forte { 267fcf3ce44SJohn Forte unsigned char ipv4address[4]; 268fcf3ce44SJohn Forte unsigned char ipv6address[16]; 269fcf3ce44SJohn Forte } ipaddress; 270fcf3ce44SJohn Forte } HBA_IPADDRESS, *PHBA_IPADDRESS; 271fcf3ce44SJohn Forte 272fcf3ce44SJohn Forte typedef HBA_INT8 HBA_BOOLEAN; 273fcf3ce44SJohn Forte 274fcf3ce44SJohn Forte /* 4.2.7 Adapter Attributes */ 275fcf3ce44SJohn Forte typedef struct hba_AdapterAttributes { 276fcf3ce44SJohn Forte char Manufacturer[64]; /*Emulex */ 277fcf3ce44SJohn Forte char SerialNumber[64]; /* A12345 */ 278fcf3ce44SJohn Forte char Model[256]; /* QLA2200 */ 279fcf3ce44SJohn Forte char ModelDescription[256]; /* Agilent TachLite */ 280fcf3ce44SJohn Forte HBA_WWN NodeWWN; 281fcf3ce44SJohn Forte char NodeSymbolicName[256]; /* From GS-3 */ 282fcf3ce44SJohn Forte char HardwareVersion[256]; /* Vendor use */ 283fcf3ce44SJohn Forte char DriverVersion[256]; /* Vendor use */ 284fcf3ce44SJohn Forte char OptionROMVersion[256]; /* Vendor use - i.e. hardware boot ROM*/ 285fcf3ce44SJohn Forte char FirmwareVersion[256]; /* Vendor use */ 286fcf3ce44SJohn Forte HBA_UINT32 VendorSpecificID; /* Vendor specific */ 287fcf3ce44SJohn Forte HBA_UINT32 NumberOfPorts; 288fcf3ce44SJohn Forte char DriverName[256]; /* Binary path and/or name of driver 289fcf3ce44SJohn Forte *file */ 290fcf3ce44SJohn Forte } HBA_ADAPTERATTRIBUTES, *PHBA_ADAPTERATTRIBUTES; 291fcf3ce44SJohn Forte 292fcf3ce44SJohn Forte /* 4.2.8 Port Attributes */ 293fcf3ce44SJohn Forte typedef struct HBA_PortAttributes { 294fcf3ce44SJohn Forte HBA_WWN NodeWWN; 295fcf3ce44SJohn Forte HBA_WWN PortWWN; 296fcf3ce44SJohn Forte HBA_UINT32 PortFcId; 297fcf3ce44SJohn Forte HBA_PORTTYPE PortType; /*PTP, Fabric, etc. */ 298fcf3ce44SJohn Forte HBA_PORTSTATE PortState; 299fcf3ce44SJohn Forte HBA_COS PortSupportedClassofService; 300fcf3ce44SJohn Forte HBA_FC4TYPES PortSupportedFc4Types; 301fcf3ce44SJohn Forte HBA_FC4TYPES PortActiveFc4Types; 302fcf3ce44SJohn Forte char PortSymbolicName[256]; 303fcf3ce44SJohn Forte char OSDeviceName[256]; /* \device\ScsiPort3 */ 304fcf3ce44SJohn Forte HBA_PORTSPEED PortSupportedSpeed; 305fcf3ce44SJohn Forte HBA_PORTSPEED PortSpeed; 306fcf3ce44SJohn Forte HBA_UINT32 PortMaxFrameSize; 307fcf3ce44SJohn Forte HBA_WWN FabricName; 308fcf3ce44SJohn Forte HBA_UINT32 NumberofDiscoveredPorts; 309fcf3ce44SJohn Forte } HBA_PORTATTRIBUTES, *PHBA_PORTATTRIBUTES; 310fcf3ce44SJohn Forte 311fcf3ce44SJohn Forte 312fcf3ce44SJohn Forte 313fcf3ce44SJohn Forte /* 4.2.9 Port Statistics */ 314fcf3ce44SJohn Forte 315fcf3ce44SJohn Forte typedef struct HBA_PortStatistics { 316fcf3ce44SJohn Forte HBA_INT64 SecondsSinceLastReset; 317fcf3ce44SJohn Forte HBA_INT64 TxFrames; 318fcf3ce44SJohn Forte HBA_INT64 TxWords; 319fcf3ce44SJohn Forte HBA_INT64 RxFrames; 320fcf3ce44SJohn Forte HBA_INT64 RxWords; 321fcf3ce44SJohn Forte HBA_INT64 LIPCount; 322fcf3ce44SJohn Forte HBA_INT64 NOSCount; 323fcf3ce44SJohn Forte HBA_INT64 ErrorFrames; 324fcf3ce44SJohn Forte HBA_INT64 DumpedFrames; 325fcf3ce44SJohn Forte HBA_INT64 LinkFailureCount; 326fcf3ce44SJohn Forte HBA_INT64 LossOfSyncCount; 327fcf3ce44SJohn Forte HBA_INT64 LossOfSignalCount; 328fcf3ce44SJohn Forte HBA_INT64 PrimitiveSeqProtocolErrCount; 329fcf3ce44SJohn Forte HBA_INT64 InvalidTxWordCount; 330fcf3ce44SJohn Forte HBA_INT64 InvalidCRCCount; 331fcf3ce44SJohn Forte } HBA_PORTSTATISTICS, *PHBA_PORTSTATISTICS; 332fcf3ce44SJohn Forte 333fcf3ce44SJohn Forte 334fcf3ce44SJohn Forte 335fcf3ce44SJohn Forte /* 4.2.10 FCP Attributes */ 336fcf3ce44SJohn Forte 337fcf3ce44SJohn Forte typedef enum HBA_fcpbindingtype { TO_D_ID, TO_WWN, TO_OTHER } HBA_FCPBINDINGTYPE; 338fcf3ce44SJohn Forte 339fcf3ce44SJohn Forte typedef struct HBA_ScsiId { 340fcf3ce44SJohn Forte char OSDeviceName[256]; /* \device\ScsiPort3 */ 341fcf3ce44SJohn Forte HBA_UINT32 ScsiBusNumber; /* Bus on the HBA */ 342fcf3ce44SJohn Forte HBA_UINT32 ScsiTargetNumber; /* SCSI Target ID to OS */ 343fcf3ce44SJohn Forte HBA_UINT32 ScsiOSLun; 344fcf3ce44SJohn Forte } HBA_SCSIID, *PHBA_SCSIID; 345fcf3ce44SJohn Forte 346fcf3ce44SJohn Forte typedef struct HBA_FcpId { 347fcf3ce44SJohn Forte HBA_UINT32 FcId; 348fcf3ce44SJohn Forte HBA_WWN NodeWWN; 349fcf3ce44SJohn Forte HBA_WWN PortWWN; 350fcf3ce44SJohn Forte HBA_UINT64 FcpLun; 351fcf3ce44SJohn Forte } HBA_FCPID, *PHBA_FCPID; 352fcf3ce44SJohn Forte 353fcf3ce44SJohn Forte typedef struct HBA_LUID { 354fcf3ce44SJohn Forte char buffer[256]; /* Unique Device Identifier */ 355fcf3ce44SJohn Forte } HBA_LUID, *PHBA_LUID; 356fcf3ce44SJohn Forte 357fcf3ce44SJohn Forte typedef struct HBA_FcpScsiEntry { 358fcf3ce44SJohn Forte HBA_SCSIID ScsiId; 359fcf3ce44SJohn Forte HBA_FCPID FcpId; 360fcf3ce44SJohn Forte } HBA_FCPSCSIENTRY, *PHBA_FCPSCSIENTRY; 361fcf3ce44SJohn Forte 362fcf3ce44SJohn Forte typedef struct HBA_FcpScsiEntryV2 { 363fcf3ce44SJohn Forte HBA_SCSIID ScsiId; 364fcf3ce44SJohn Forte HBA_FCPID FcpId; 365fcf3ce44SJohn Forte HBA_LUID LUID; 366fcf3ce44SJohn Forte } HBA_FCPSCSIENTRYV2, *PHBA_FCPSCSIENTRYV2; 367fcf3ce44SJohn Forte 368fcf3ce44SJohn Forte typedef struct HBA_FCPTargetMapping { 369fcf3ce44SJohn Forte HBA_UINT32 NumberOfEntries; 370fcf3ce44SJohn Forte HBA_FCPSCSIENTRY entry[1]; /* Variable length array 371fcf3ce44SJohn Forte * containing mappings */ 372fcf3ce44SJohn Forte } HBA_FCPTARGETMAPPING, *PHBA_FCPTARGETMAPPING; 373fcf3ce44SJohn Forte 374fcf3ce44SJohn Forte typedef struct HBA_FCPTargetMappingV2 { 375fcf3ce44SJohn Forte HBA_UINT32 NumberOfEntries; 376fcf3ce44SJohn Forte HBA_FCPSCSIENTRYV2 entry[1]; /* Variable length array 377fcf3ce44SJohn Forte * containing mappings */ 378fcf3ce44SJohn Forte } HBA_FCPTARGETMAPPINGV2, *PHBA_FCPTARGETMAPPINGV2; 379fcf3ce44SJohn Forte 380fcf3ce44SJohn Forte typedef struct HBA_FCPBindingEntry { 381fcf3ce44SJohn Forte HBA_FCPBINDINGTYPE type; 382fcf3ce44SJohn Forte HBA_SCSIID ScsiId; 383fcf3ce44SJohn Forte HBA_FCPID FcpId; /* WWN valid only if type is 384fcf3ce44SJohn Forte * to WWN, FcpLun always valid */ 385fcf3ce44SJohn Forte HBA_UINT32 FcId; 386fcf3ce44SJohn Forte } HBA_FCPBINDINGENTRY, *PHBA_FCPBINDINGENTRY; 387fcf3ce44SJohn Forte 388fcf3ce44SJohn Forte typedef struct HBA_FCPBinding { 389fcf3ce44SJohn Forte HBA_UINT32 NumberOfEntries; 390fcf3ce44SJohn Forte HBA_FCPBINDINGENTRY entry[1]; /* Variable length array */ 391fcf3ce44SJohn Forte } HBA_FCPBINDING, *PHBA_FCPBINDING; 392fcf3ce44SJohn Forte 393fcf3ce44SJohn Forte /* 4.2.11 FC-3 Management Atrributes */ 394fcf3ce44SJohn Forte 395fcf3ce44SJohn Forte typedef enum HBA_wwntype { NODE_WWN, PORT_WWN } HBA_WWNTYPE; 396fcf3ce44SJohn Forte 397fcf3ce44SJohn Forte typedef struct HBA_MgmtInfo { 398fcf3ce44SJohn Forte HBA_WWN wwn; 399fcf3ce44SJohn Forte HBA_UINT32 unittype; 400fcf3ce44SJohn Forte HBA_UINT32 PortId; 401fcf3ce44SJohn Forte HBA_UINT32 NumberOfAttachedNodes; 402fcf3ce44SJohn Forte HBA_UINT16 IPVersion; 403fcf3ce44SJohn Forte HBA_UINT16 UDPPort; 404fcf3ce44SJohn Forte HBA_UINT8 IPAddress[16]; 405fcf3ce44SJohn Forte HBA_UINT16 reserved; 406fcf3ce44SJohn Forte HBA_UINT16 TopologyDiscoveryFlags; 407fcf3ce44SJohn Forte } HBA_MGMTINFO, *PHBA_MGMTINFO; 408fcf3ce44SJohn Forte 409fcf3ce44SJohn Forte /* Event Codes */ 410fcf3ce44SJohn Forte #define HBA_EVENT_LIP_OCCURRED 1 411fcf3ce44SJohn Forte #define HBA_EVENT_LINK_UP 2 412fcf3ce44SJohn Forte #define HBA_EVENT_LINK_DOWN 3 413fcf3ce44SJohn Forte #define HBA_EVENT_LIP_RESET_OCCURRED 4 414fcf3ce44SJohn Forte #define HBA_EVENT_RSCN 5 415fcf3ce44SJohn Forte #define HBA_EVENT_PROPRIETARY 0xFFFF 416fcf3ce44SJohn Forte 417fcf3ce44SJohn Forte typedef struct HBA_Link_EventInfo { 418fcf3ce44SJohn Forte HBA_UINT32 PortFcId; /* Port where event occurred */ 419fcf3ce44SJohn Forte HBA_UINT32 Reserved[3]; 420fcf3ce44SJohn Forte } HBA_LINK_EVENTINFO, *PHBA_LINK_EVENTINFO; 421fcf3ce44SJohn Forte 422fcf3ce44SJohn Forte typedef struct HBA_RSCN_EventInfo { 423fcf3ce44SJohn Forte HBA_UINT32 PortFcId; /* Port where event occurred */ 424fcf3ce44SJohn Forte HBA_UINT32 NPortPage; /* Reference FC-FS for RSCN ELS 425fcf3ce44SJohn Forte * "Affected N-Port Pages"*/ 426fcf3ce44SJohn Forte HBA_UINT32 Reserved[2]; 427fcf3ce44SJohn Forte } HBA_RSCN_EVENTINFO, *PHBA_RSCN_EVENTINFO; 428fcf3ce44SJohn Forte 429fcf3ce44SJohn Forte typedef struct HBA_Pty_EventInfo { 430fcf3ce44SJohn Forte HBA_UINT32 PtyData[4]; /* Proprietary data */ 431fcf3ce44SJohn Forte } HBA_PTY_EVENTINFO, *PHBA_PTY_EVENTINFO; 432fcf3ce44SJohn Forte 433fcf3ce44SJohn Forte typedef struct HBA_EventInfo { 434fcf3ce44SJohn Forte HBA_UINT32 EventCode; 435fcf3ce44SJohn Forte union { 436fcf3ce44SJohn Forte HBA_LINK_EVENTINFO Link_EventInfo; 437fcf3ce44SJohn Forte HBA_RSCN_EVENTINFO RSCN_EventInfo; 438fcf3ce44SJohn Forte HBA_PTY_EVENTINFO Pty_EventInfo; 439fcf3ce44SJohn Forte } Event; 440fcf3ce44SJohn Forte } HBA_EVENTINFO, *PHBA_EVENTINFO; 441fcf3ce44SJohn Forte 442fcf3ce44SJohn Forte #ifndef _KERNEL 443fcf3ce44SJohn Forte typedef struct HBA_LibraryAttributes { 444fcf3ce44SJohn Forte HBA_BOOLEAN final; 445fcf3ce44SJohn Forte char LibPath[256]; 446fcf3ce44SJohn Forte char VName[256]; 447fcf3ce44SJohn Forte char VVersion[256]; 448fcf3ce44SJohn Forte struct tm build_date; 449fcf3ce44SJohn Forte } HBA_LIBRARYATTRIBUTES, *PHBA_LIBRARYATTRIBUTES; 450fcf3ce44SJohn Forte #endif /* ifndef _KERNEL */ 451fcf3ce44SJohn Forte 452fcf3ce44SJohn Forte /* Persistant Binding... */ 453fcf3ce44SJohn Forte typedef HBA_UINT32 HBA_BIND_TYPE; 454fcf3ce44SJohn Forte #define HBA_BIND_TO_D_ID 0x0001 455fcf3ce44SJohn Forte #define HBA_BIND_TO_WWPN 0x0002 456fcf3ce44SJohn Forte #define HBA_BIND_TO_WWNN 0x0004 457fcf3ce44SJohn Forte #define HBA_BIND_TO_LUID 0x0008 458fcf3ce44SJohn Forte #define HBA_BIND_TARGETS 0x0800 459fcf3ce44SJohn Forte 460fcf3ce44SJohn Forte /* A bit mask of Rev 2.0 persistent binding capabilities */ 461fcf3ce44SJohn Forte typedef HBA_UINT32 HBA_BIND_CAPABILITY; 462fcf3ce44SJohn Forte /* The following are bit flags indicating persistent binding capabilities */ 463fcf3ce44SJohn Forte #define HBA_CAN_BIND_TO_D_ID 0x0001 464fcf3ce44SJohn Forte #define HBA_CAN_BIND_TO_WWPN 0x0002 465fcf3ce44SJohn Forte #define HBA_CAN_BIND_TO_WWNN 0x0004 466fcf3ce44SJohn Forte #define HBA_CAN_BIND_TO_LUID 0x0008 467fcf3ce44SJohn Forte #define HBA_CAN_BIND_ANY_LUNS 0x0400 468fcf3ce44SJohn Forte #define HBA_CAN_BIND_TARGETS 0x0800 469fcf3ce44SJohn Forte #define HBA_CAN_BIND_AUTOMAP 0x1000 470fcf3ce44SJohn Forte #define HBA_CAN_BIND_CONFIGURED 0x2000 471fcf3ce44SJohn Forte 472fcf3ce44SJohn Forte #define HBA_BIND_STATUS_DISABLED 0x00 473fcf3ce44SJohn Forte #define HBA_BIND_STATUS_ENABLED 0x01 474fcf3ce44SJohn Forte 475fcf3ce44SJohn Forte typedef HBA_UINT32 HBA_BIND_STATUS; 476fcf3ce44SJohn Forte 477fcf3ce44SJohn Forte #define HBA_BIND_EFFECTIVE_AT_REBOOT 0x00 478fcf3ce44SJohn Forte #define HBA_BIND_EFFECTIVE_IMMEDIATE 0x01 479fcf3ce44SJohn Forte 480fcf3ce44SJohn Forte typedef HBA_UINT32 HBA_BIND_EFFECTIVE; 481fcf3ce44SJohn Forte 482fcf3ce44SJohn Forte typedef struct HBA_FCPBindingEntry2 { 483fcf3ce44SJohn Forte HBA_BIND_TYPE type; 484fcf3ce44SJohn Forte HBA_SCSIID ScsiId; 485fcf3ce44SJohn Forte HBA_FCPID FcpId; 486fcf3ce44SJohn Forte HBA_LUID LUID; 487fcf3ce44SJohn Forte HBA_STATUS status; 488fcf3ce44SJohn Forte } HBA_FCPBINDINGENTRY2, *PHBA_FCPBINDINGENTRY2; 489fcf3ce44SJohn Forte 490fcf3ce44SJohn Forte typedef struct HBA_FcpBinding2 { 491fcf3ce44SJohn Forte HBA_UINT32 NumberOfEntries; 492fcf3ce44SJohn Forte HBA_FCPBINDINGENTRY2 493fcf3ce44SJohn Forte entry[1]; /* Variable length array */ 494fcf3ce44SJohn Forte } HBA_FCPBINDING2, *PHBA_FCPBINDING2; 495fcf3ce44SJohn Forte 496fcf3ce44SJohn Forte /* FC-4 Instrumentation */ 497fcf3ce44SJohn Forte typedef struct HBA_FC4Statistics { 498fcf3ce44SJohn Forte HBA_INT64 InputRequests; 499fcf3ce44SJohn Forte HBA_INT64 OutputRequests; 500fcf3ce44SJohn Forte HBA_INT64 ControlRequests; 501fcf3ce44SJohn Forte HBA_INT64 InputMegabytes; 502fcf3ce44SJohn Forte HBA_INT64 OutputMegabytes; 503fcf3ce44SJohn Forte } HBA_FC4STATISTICS, *PHBA_FC4STATISTICS; 504fcf3ce44SJohn Forte 505fcf3ce44SJohn Forte 506fcf3ce44SJohn Forte typedef void * HBA_CALLBACKHANDLE; 507fcf3ce44SJohn Forte /* Adapter Level Events */ 508fcf3ce44SJohn Forte #define HBA_EVENT_ADAPTER_UNKNOWN 0x100 509fcf3ce44SJohn Forte #define HBA_EVENT_ADAPTER_ADD 0x101 510fcf3ce44SJohn Forte #define HBA_EVENT_ADAPTER_REMOVE 0x102 511fcf3ce44SJohn Forte #define HBA_EVENT_ADAPTER_CHANGE 0x103 512fcf3ce44SJohn Forte 513fcf3ce44SJohn Forte /* Port Level Events */ 514fcf3ce44SJohn Forte #define HBA_EVENT_PORT_UNKNOWN 0x200 515fcf3ce44SJohn Forte #define HBA_EVENT_PORT_OFFLINE 0x201 516fcf3ce44SJohn Forte #define HBA_EVENT_PORT_ONLINE 0x202 517fcf3ce44SJohn Forte #define HBA_EVENT_PORT_NEW_TARGETS 0x203 518fcf3ce44SJohn Forte #define HBA_EVENT_PORT_FABRIC 0x204 519fcf3ce44SJohn Forte 520fcf3ce44SJohn Forte /* Port Statistics Events */ 521fcf3ce44SJohn Forte #define HBA_EVENT_PORT_STAT_THRESHOLD 0x301 522fcf3ce44SJohn Forte #define HBA_EVENT_PORT_STAT_GROWTH 0x302 523fcf3ce44SJohn Forte 524fcf3ce44SJohn Forte /* Target Level Events */ 525fcf3ce44SJohn Forte #define HBA_EVENT_TARGET_UNKNOWN 0x400 526fcf3ce44SJohn Forte #define HBA_EVENT_TARGET_OFFLINE 0x401 527fcf3ce44SJohn Forte #define HBA_EVENT_TARGET_ONLINE 0x402 528fcf3ce44SJohn Forte #define HBA_EVENT_TARGET_REMOVED 0x403 529fcf3ce44SJohn Forte 530fcf3ce44SJohn Forte /* Fabric Link Events */ 531fcf3ce44SJohn Forte #define HBA_EVENT_LINK_UNKNOWN 0x500 532fcf3ce44SJohn Forte #define HBA_EVENT_LINK_INCIDENT 0x501 533fcf3ce44SJohn Forte 534fcf3ce44SJohn Forte HBA_API HBA_UINT32 HBA_GetVersion(); 535fcf3ce44SJohn Forte 536fcf3ce44SJohn Forte /* 537fcf3ce44SJohn Forte * Make sure HBA_LoadLibrary returns before any other threads 538fcf3ce44SJohn Forte * make calls to the library 539fcf3ce44SJohn Forte */ 540fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_LoadLibrary(); 541fcf3ce44SJohn Forte 542fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_FreeLibrary(); 543fcf3ce44SJohn Forte 544fcf3ce44SJohn Forte HBA_API HBA_UINT32 HBA_GetNumberOfAdapters(); 545fcf3ce44SJohn Forte 546fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_GetAdapterName( 547fcf3ce44SJohn Forte HBA_UINT32 adapterindex, 548fcf3ce44SJohn Forte char *adaptername 549fcf3ce44SJohn Forte ); 550fcf3ce44SJohn Forte 551fcf3ce44SJohn Forte HBA_API HBA_HANDLE HBA_OpenAdapter( 552fcf3ce44SJohn Forte char* adaptername 553fcf3ce44SJohn Forte ); 554fcf3ce44SJohn Forte 555fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_OpenAdapterByWWN( 556fcf3ce44SJohn Forte HBA_HANDLE *handle, 557fcf3ce44SJohn Forte HBA_WWN wwn 558fcf3ce44SJohn Forte ); 559fcf3ce44SJohn Forte 560fcf3ce44SJohn Forte HBA_API void HBA_CloseAdapter( 561fcf3ce44SJohn Forte HBA_HANDLE handle 562fcf3ce44SJohn Forte ); 563fcf3ce44SJohn Forte 564fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_GetAdapterAttributes( 565fcf3ce44SJohn Forte HBA_HANDLE handle, 566fcf3ce44SJohn Forte HBA_ADAPTERATTRIBUTES 567fcf3ce44SJohn Forte *hbaattributes 568fcf3ce44SJohn Forte ); 569fcf3ce44SJohn Forte 570fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_GetAdapterPortAttributes( 571fcf3ce44SJohn Forte HBA_HANDLE handle, 572fcf3ce44SJohn Forte HBA_UINT32 portindex, 573fcf3ce44SJohn Forte HBA_PORTATTRIBUTES *portattributes 574fcf3ce44SJohn Forte ); 575fcf3ce44SJohn Forte 576fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_GetPortStatistics( 577fcf3ce44SJohn Forte HBA_HANDLE handle, 578fcf3ce44SJohn Forte HBA_UINT32 portindex, 579fcf3ce44SJohn Forte HBA_PORTSTATISTICS *portstatistics 580fcf3ce44SJohn Forte ); 581fcf3ce44SJohn Forte 582fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_GetDiscoveredPortAttributes( 583fcf3ce44SJohn Forte HBA_HANDLE handle, 584fcf3ce44SJohn Forte HBA_UINT32 portindex, 585fcf3ce44SJohn Forte HBA_UINT32 discoveredportindex, 586fcf3ce44SJohn Forte HBA_PORTATTRIBUTES *portattributes 587fcf3ce44SJohn Forte ); 588fcf3ce44SJohn Forte 589fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_GetPortAttributesByWWN( 590fcf3ce44SJohn Forte HBA_HANDLE handle, 591fcf3ce44SJohn Forte HBA_WWN PortWWN, 592fcf3ce44SJohn Forte HBA_PORTATTRIBUTES *portattributes 593fcf3ce44SJohn Forte ); 594fcf3ce44SJohn Forte 595fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_SendCTPassThruV2( 596fcf3ce44SJohn Forte HBA_HANDLE handle, 597fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 598fcf3ce44SJohn Forte void *pReqBuffer, 599fcf3ce44SJohn Forte HBA_UINT32 ReqBufferSize, 600fcf3ce44SJohn Forte void *pRspBuffer, 601fcf3ce44SJohn Forte HBA_UINT32 *pRspBufferSize 602fcf3ce44SJohn Forte ); 603fcf3ce44SJohn Forte 604fcf3ce44SJohn Forte /* Depricated, but supported */ 605fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_SendCTPassThru( 606fcf3ce44SJohn Forte HBA_HANDLE handle, 607fcf3ce44SJohn Forte void *pReqBuffer, 608fcf3ce44SJohn Forte HBA_UINT32 ReqBufferSize, 609fcf3ce44SJohn Forte void *pRspBuffer, 610fcf3ce44SJohn Forte HBA_UINT32 RspBufferSize 611fcf3ce44SJohn Forte ); 612fcf3ce44SJohn Forte 613fcf3ce44SJohn Forte HBA_API void HBA_RefreshAdapterConfiguration(); 614fcf3ce44SJohn Forte 615fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_GetEventBuffer( 616fcf3ce44SJohn Forte HBA_HANDLE handle, 617fcf3ce44SJohn Forte HBA_EVENTINFO *EventBuffer, 618fcf3ce44SJohn Forte HBA_UINT32 *EventBufferCount 619fcf3ce44SJohn Forte ); 620fcf3ce44SJohn Forte 621fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_SetRNIDMgmtInfo( 622fcf3ce44SJohn Forte HBA_HANDLE handle, 623fcf3ce44SJohn Forte HBA_MGMTINFO Info 624fcf3ce44SJohn Forte ); 625fcf3ce44SJohn Forte 626fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_GetRNIDMgmtInfo( 627fcf3ce44SJohn Forte HBA_HANDLE handle, 628fcf3ce44SJohn Forte HBA_MGMTINFO *pInfo 629fcf3ce44SJohn Forte ); 630fcf3ce44SJohn Forte 631fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_SendRNIDV2( 632fcf3ce44SJohn Forte HBA_HANDLE handle, 633fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 634fcf3ce44SJohn Forte HBA_WWN destWWN, 635fcf3ce44SJohn Forte HBA_UINT32 destFCID, 636fcf3ce44SJohn Forte HBA_UINT32 NodeIdDataFormat, 637fcf3ce44SJohn Forte void *pRspBuffer, 638fcf3ce44SJohn Forte HBA_UINT32 *pRspBufferSize 639fcf3ce44SJohn Forte ); 640fcf3ce44SJohn Forte 641fcf3ce44SJohn Forte /* Depricated, but supported */ 642fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_SendRNID( 643fcf3ce44SJohn Forte HBA_HANDLE handle, 644fcf3ce44SJohn Forte HBA_WWN wwn, 645fcf3ce44SJohn Forte HBA_WWNTYPE wwntype, 646fcf3ce44SJohn Forte void *pRspBuffer, 647fcf3ce44SJohn Forte HBA_UINT32 *pRspBufferSize 648fcf3ce44SJohn Forte ); 649fcf3ce44SJohn Forte 650fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_SendRLS ( 651fcf3ce44SJohn Forte HBA_HANDLE handle, 652fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 653fcf3ce44SJohn Forte HBA_WWN destWWN, 654fcf3ce44SJohn Forte void *pRspBuffer, 655fcf3ce44SJohn Forte HBA_UINT32 *pRspBufferSize 656fcf3ce44SJohn Forte ); 657fcf3ce44SJohn Forte 658fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_SendRPL ( 659fcf3ce44SJohn Forte HBA_HANDLE handle, 660fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 661fcf3ce44SJohn Forte HBA_WWN agent_wwn, 662fcf3ce44SJohn Forte HBA_UINT32 agent_domain, 663fcf3ce44SJohn Forte HBA_UINT32 portindex, 664fcf3ce44SJohn Forte void *pRspBuffer, 665fcf3ce44SJohn Forte HBA_UINT32 *pRspBufferSize 666fcf3ce44SJohn Forte ); 667fcf3ce44SJohn Forte 668fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_SendRPS ( 669fcf3ce44SJohn Forte HBA_HANDLE handle, 670fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 671fcf3ce44SJohn Forte HBA_WWN agent_wwn, 672fcf3ce44SJohn Forte HBA_UINT32 agent_domain, 673fcf3ce44SJohn Forte HBA_WWN object_wwn, 674fcf3ce44SJohn Forte HBA_UINT32 object_port_number, 675fcf3ce44SJohn Forte void *pRspBuffer, 676fcf3ce44SJohn Forte HBA_UINT32 *pRspBufferSize 677fcf3ce44SJohn Forte ); 678fcf3ce44SJohn Forte 679fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_SendSRL ( 680fcf3ce44SJohn Forte HBA_HANDLE handle, 681fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 682fcf3ce44SJohn Forte HBA_WWN wwn, 683fcf3ce44SJohn Forte HBA_UINT32 domain, 684fcf3ce44SJohn Forte void *pRspBuffer, 685fcf3ce44SJohn Forte HBA_UINT32 *pRspBufferSize 686fcf3ce44SJohn Forte ); 687fcf3ce44SJohn Forte 688fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_SendLIRR ( 689fcf3ce44SJohn Forte HBA_HANDLE handle, 690fcf3ce44SJohn Forte HBA_WWN sourceWWN, 691fcf3ce44SJohn Forte HBA_WWN destWWN, 692fcf3ce44SJohn Forte HBA_UINT8 function, 693fcf3ce44SJohn Forte HBA_UINT8 type, 694fcf3ce44SJohn Forte void *pRspBuffer, 695fcf3ce44SJohn Forte HBA_UINT32 *pRspBufferSize 696fcf3ce44SJohn Forte ); 697fcf3ce44SJohn Forte 698fcf3ce44SJohn Forte 699fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_GetFC4Statistics ( 700fcf3ce44SJohn Forte HBA_HANDLE handle, 701fcf3ce44SJohn Forte HBA_WWN portWWN, 702fcf3ce44SJohn Forte HBA_UINT8 FC4type, 703fcf3ce44SJohn Forte HBA_FC4STATISTICS *pstatistics 704fcf3ce44SJohn Forte ); 705fcf3ce44SJohn Forte 706fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_GetFCPStatistics ( 707fcf3ce44SJohn Forte HBA_HANDLE handle, 708fcf3ce44SJohn Forte const HBA_SCSIID *lunit, 709fcf3ce44SJohn Forte HBA_FC4STATISTICS *pstatistics); 710fcf3ce44SJohn Forte 711fcf3ce44SJohn Forte HBA_API void HBA_RefreshInformation( 712fcf3ce44SJohn Forte HBA_HANDLE handle 713fcf3ce44SJohn Forte ); 714fcf3ce44SJohn Forte 715fcf3ce44SJohn Forte HBA_API void HBA_ResetStatistics( 716fcf3ce44SJohn Forte HBA_HANDLE handle, 717fcf3ce44SJohn Forte HBA_UINT32 portindex 718fcf3ce44SJohn Forte ); 719fcf3ce44SJohn Forte 720fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_GetFcpTargetMapping( 721fcf3ce44SJohn Forte HBA_HANDLE handle, 722fcf3ce44SJohn Forte HBA_FCPTARGETMAPPING 723fcf3ce44SJohn Forte *pmapping 724fcf3ce44SJohn Forte ); 725fcf3ce44SJohn Forte 726fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_GetFcpTargetMappingV2( 727fcf3ce44SJohn Forte HBA_HANDLE handle, 728fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 729fcf3ce44SJohn Forte HBA_FCPTARGETMAPPINGV2 730fcf3ce44SJohn Forte *pmapping 731fcf3ce44SJohn Forte ); 732fcf3ce44SJohn Forte 733fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_GetBindingCapability( 734fcf3ce44SJohn Forte HBA_HANDLE handle, 735fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 736fcf3ce44SJohn Forte HBA_BIND_CAPABILITY *pcapability 737fcf3ce44SJohn Forte ); 738fcf3ce44SJohn Forte 739fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_GetBindingSupport( 740fcf3ce44SJohn Forte HBA_HANDLE handle, 741fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 742fcf3ce44SJohn Forte HBA_BIND_CAPABILITY *pcapability 743fcf3ce44SJohn Forte ); 744fcf3ce44SJohn Forte 745fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_SetBindingSupport( 746fcf3ce44SJohn Forte HBA_HANDLE handle, 747fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 748fcf3ce44SJohn Forte HBA_BIND_CAPABILITY capability 749fcf3ce44SJohn Forte ); 750fcf3ce44SJohn Forte 751fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_SetPersistentBindingV2( 752fcf3ce44SJohn Forte HBA_HANDLE handle, 753fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 754fcf3ce44SJohn Forte const HBA_FCPBINDING2 755fcf3ce44SJohn Forte *pbinding 756fcf3ce44SJohn Forte ); 757fcf3ce44SJohn Forte 758fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_GetPersistentBindingV2( 759fcf3ce44SJohn Forte HBA_HANDLE handle, 760fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 761fcf3ce44SJohn Forte HBA_FCPBINDING2 *binding 762fcf3ce44SJohn Forte ); 763fcf3ce44SJohn Forte 764fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_RemovePersistentBinding( 765fcf3ce44SJohn Forte HBA_HANDLE handle, 766fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 767fcf3ce44SJohn Forte const HBA_FCPBINDING2 768fcf3ce44SJohn Forte *pbinding 769fcf3ce44SJohn Forte ); 770fcf3ce44SJohn Forte 771fcf3ce44SJohn Forte /* Depricated, but supported */ 772fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_GetFcpPersistentBinding( 773fcf3ce44SJohn Forte HBA_HANDLE handle, 774fcf3ce44SJohn Forte HBA_FCPBINDING *binding 775fcf3ce44SJohn Forte ); 776fcf3ce44SJohn Forte 777fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_RemoveAllPersistentBindings( 778fcf3ce44SJohn Forte HBA_HANDLE handle, 779fcf3ce44SJohn Forte HBA_WWN hbaPortWWN 780fcf3ce44SJohn Forte ); 781fcf3ce44SJohn Forte 782fcf3ce44SJohn Forte HBA_STATUS HBA_ScsiInquiryV2 ( 783fcf3ce44SJohn Forte HBA_HANDLE handle, 784fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 785fcf3ce44SJohn Forte HBA_WWN discoveredPortWWN, 786fcf3ce44SJohn Forte HBA_UINT64 fcLUN, 787fcf3ce44SJohn Forte HBA_UINT8 CDB_Byte1, 788fcf3ce44SJohn Forte HBA_UINT8 CDB_BYte2, 789fcf3ce44SJohn Forte void *pRspBuffer, 790fcf3ce44SJohn Forte HBA_UINT32 *pRspBufferSize, 791fcf3ce44SJohn Forte HBA_UINT8 *pScsiStatus, 792fcf3ce44SJohn Forte void *pSenseBuffer, 793fcf3ce44SJohn Forte HBA_UINT32 *pSenseBufferSize 794fcf3ce44SJohn Forte ); 795fcf3ce44SJohn Forte 796fcf3ce44SJohn Forte /* Depricated, but supported */ 797fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_SendScsiInquiry ( 798fcf3ce44SJohn Forte HBA_HANDLE handle, 799fcf3ce44SJohn Forte HBA_WWN PortWWN, 800fcf3ce44SJohn Forte HBA_UINT64 fcLUN, 801fcf3ce44SJohn Forte HBA_UINT8 EVPD, 802fcf3ce44SJohn Forte HBA_UINT32 PageCode, 803fcf3ce44SJohn Forte void *pRspBuffer, 804fcf3ce44SJohn Forte HBA_UINT32 RspBufferSize, 805fcf3ce44SJohn Forte void *pSenseBuffer, 806fcf3ce44SJohn Forte HBA_UINT32 SenseBufferSize 807fcf3ce44SJohn Forte ); 808fcf3ce44SJohn Forte 809fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_ScsiReportLUNsV2( 810fcf3ce44SJohn Forte HBA_HANDLE handle, 811fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 812fcf3ce44SJohn Forte HBA_WWN discoveredPortWWN, 813fcf3ce44SJohn Forte void *pRespBuffer, 814fcf3ce44SJohn Forte HBA_UINT32 *pRespBufferSize, 815fcf3ce44SJohn Forte HBA_UINT8 *pScsiStatus, 816fcf3ce44SJohn Forte void *pSenseBuffer, 817fcf3ce44SJohn Forte HBA_UINT32 *pSenseBufferSize 818fcf3ce44SJohn Forte ); 819fcf3ce44SJohn Forte 820fcf3ce44SJohn Forte /* Depricated, but supported */ 821fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_SendReportLUNs ( 822fcf3ce44SJohn Forte HBA_HANDLE handle, 823fcf3ce44SJohn Forte HBA_WWN portWWN, 824fcf3ce44SJohn Forte void *pRspBuffer, 825fcf3ce44SJohn Forte HBA_UINT32 RspBufferSize, 826fcf3ce44SJohn Forte void *pSenseBuffer, 827fcf3ce44SJohn Forte HBA_UINT32 SenseBufferSize 828fcf3ce44SJohn Forte ); 829fcf3ce44SJohn Forte 830fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_ScsiReadCapacityV2( 831fcf3ce44SJohn Forte HBA_HANDLE handle, 832fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 833fcf3ce44SJohn Forte HBA_WWN discoveredPortWWN, 834fcf3ce44SJohn Forte HBA_UINT64 fcLUN, 835fcf3ce44SJohn Forte void *pRspBuffer, 836fcf3ce44SJohn Forte HBA_UINT32 *pRspBufferSize, 837fcf3ce44SJohn Forte HBA_UINT8 *pScsiStatus, 838fcf3ce44SJohn Forte void *pSenseBuffer, 839fcf3ce44SJohn Forte HBA_UINT32 *SenseBufferSize 840fcf3ce44SJohn Forte ); 841fcf3ce44SJohn Forte 842fcf3ce44SJohn Forte /* Depricated, but supported */ 843fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_SendReadCapacity ( 844fcf3ce44SJohn Forte HBA_HANDLE handle, 845fcf3ce44SJohn Forte HBA_WWN portWWN, 846fcf3ce44SJohn Forte HBA_UINT64 fcLUN, 847fcf3ce44SJohn Forte void *pRspBuffer, 848fcf3ce44SJohn Forte HBA_UINT32 RspBufferSize, 849fcf3ce44SJohn Forte void *pSenseBuffer, 850fcf3ce44SJohn Forte HBA_UINT32 SenseBufferSize 851fcf3ce44SJohn Forte ); 852fcf3ce44SJohn Forte 853fcf3ce44SJohn Forte #ifndef _KERNEL 854fcf3ce44SJohn Forte HBA_API HBA_UINT32 HBA_GetVendorLibraryAttributes ( 855fcf3ce44SJohn Forte HBA_UINT32 adapter_index, 856fcf3ce44SJohn Forte HBA_LIBRARYATTRIBUTES 857fcf3ce44SJohn Forte *attributes 858fcf3ce44SJohn Forte ); 859fcf3ce44SJohn Forte #endif /* ifndef _KERNEL */ 860fcf3ce44SJohn Forte 861fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_RemoveCallback( 862fcf3ce44SJohn Forte HBA_CALLBACKHANDLE callbackHandle 863fcf3ce44SJohn Forte ); 864fcf3ce44SJohn Forte 865fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_RegisterForAdapterAddEvents( 866fcf3ce44SJohn Forte void (*callback) ( 867fcf3ce44SJohn Forte void *data, 868fcf3ce44SJohn Forte HBA_WWN PortWWN, 869fcf3ce44SJohn Forte HBA_UINT32 eventType 870fcf3ce44SJohn Forte ), 871fcf3ce44SJohn Forte void *userData, 872fcf3ce44SJohn Forte HBA_CALLBACKHANDLE *callbackHandle 873fcf3ce44SJohn Forte ); 874fcf3ce44SJohn Forte 875fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_RegisterForAdapterEvents( 876fcf3ce44SJohn Forte void (*callback)( 877fcf3ce44SJohn Forte void *data, 878fcf3ce44SJohn Forte HBA_WWN PortWWN, 879fcf3ce44SJohn Forte HBA_UINT32 eventType 880fcf3ce44SJohn Forte ), 881fcf3ce44SJohn Forte void *userData, 882fcf3ce44SJohn Forte HBA_HANDLE handle, 883fcf3ce44SJohn Forte HBA_CALLBACKHANDLE *callbackHandle 884fcf3ce44SJohn Forte ); 885fcf3ce44SJohn Forte 886fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_RegisterForAdapterPortEvents( 887fcf3ce44SJohn Forte void (*callback)( 888fcf3ce44SJohn Forte void *data, 889fcf3ce44SJohn Forte HBA_WWN PortWWN, 890fcf3ce44SJohn Forte HBA_UINT32 eventType, 891fcf3ce44SJohn Forte HBA_UINT32 fabricPortID 892fcf3ce44SJohn Forte ), 893fcf3ce44SJohn Forte void *userData, 894fcf3ce44SJohn Forte HBA_HANDLE handle, 895fcf3ce44SJohn Forte HBA_WWN PortWWN, 896fcf3ce44SJohn Forte HBA_CALLBACKHANDLE *callbackHandle 897fcf3ce44SJohn Forte ); 898fcf3ce44SJohn Forte 899fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_RegisterForAdapterPortStatEvents( 900fcf3ce44SJohn Forte void (*callback)( 901fcf3ce44SJohn Forte void *data, 902fcf3ce44SJohn Forte HBA_WWN PortWWN, 903fcf3ce44SJohn Forte HBA_UINT32 eventType 904fcf3ce44SJohn Forte ), 905fcf3ce44SJohn Forte void *userData, 906fcf3ce44SJohn Forte HBA_HANDLE handle, 907fcf3ce44SJohn Forte HBA_WWN PortWWN, 908fcf3ce44SJohn Forte HBA_PORTSTATISTICS stats, 909fcf3ce44SJohn Forte HBA_UINT32 statType, 910fcf3ce44SJohn Forte HBA_CALLBACKHANDLE *callbackHandle 911fcf3ce44SJohn Forte ); 912fcf3ce44SJohn Forte 913fcf3ce44SJohn Forte 914fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_RegisterForTargetEvents( 915fcf3ce44SJohn Forte void (*callback)( 916fcf3ce44SJohn Forte void *data, 917fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 918fcf3ce44SJohn Forte HBA_WWN discoveredPortWWN, 919fcf3ce44SJohn Forte HBA_UINT32 eventType 920fcf3ce44SJohn Forte ), 921fcf3ce44SJohn Forte void *userData, 922fcf3ce44SJohn Forte HBA_HANDLE handle, 923fcf3ce44SJohn Forte HBA_WWN hbaPortWWN, 924fcf3ce44SJohn Forte HBA_WWN discoveredPortWWN, 925fcf3ce44SJohn Forte HBA_CALLBACKHANDLE *callbackHandle, 926fcf3ce44SJohn Forte HBA_UINT32 allTargets 927fcf3ce44SJohn Forte ); 928fcf3ce44SJohn Forte 929fcf3ce44SJohn Forte HBA_API HBA_STATUS HBA_RegisterForLinkEvents( 930fcf3ce44SJohn Forte void (*callback) 931fcf3ce44SJohn Forte ( 932fcf3ce44SJohn Forte void *data, 933fcf3ce44SJohn Forte HBA_WWN adapterWWN, 934fcf3ce44SJohn Forte HBA_UINT32 eventType, 935fcf3ce44SJohn Forte void *pRLIRBuffer, 936fcf3ce44SJohn Forte HBA_UINT32 RLIRBufferSize 937fcf3ce44SJohn Forte ), 938fcf3ce44SJohn Forte void *userData, 939fcf3ce44SJohn Forte void *pRLIRBuffer, 940fcf3ce44SJohn Forte HBA_UINT32 RLIRBufferSize, 941fcf3ce44SJohn Forte HBA_HANDLE handle, 942fcf3ce44SJohn Forte HBA_CALLBACKHANDLE *callbackHandle 943fcf3ce44SJohn Forte ); 944fcf3ce44SJohn Forte 945fcf3ce44SJohn Forte /* Wrapper library specific entry points */ 946fcf3ce44SJohn Forte 947fcf3ce44SJohn Forte #ifndef _KERNEL 948fcf3ce44SJohn Forte HBA_API HBA_UINT32 HBA_GetWrapperLibraryAttributes ( 949fcf3ce44SJohn Forte HBA_LIBRARYATTRIBUTES 950fcf3ce44SJohn Forte *attributes 951fcf3ce44SJohn Forte ); 952fcf3ce44SJohn Forte #endif /* ifndef _KERNEL */ 953fcf3ce44SJohn Forte 954fcf3ce44SJohn Forte #ifdef __cplusplus 955fcf3ce44SJohn Forte } 956fcf3ce44SJohn Forte #endif 957fcf3ce44SJohn Forte 958*bb63f56eSSukumar Swaminathan #endif /* _EMLXS_HBAAPI_H */ 959