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