1*9e86db79SHyon Kim /* 2*9e86db79SHyon Kim * **************************************************************************** 3*9e86db79SHyon Kim * 4*9e86db79SHyon Kim * Description 5*9e86db79SHyon Kim * smhbaapi.h - general header file for client 6*9e86db79SHyon Kim * and library developers 7*9e86db79SHyon Kim * 8*9e86db79SHyon Kim * License: 9*9e86db79SHyon Kim * The contents of this file are subject to the SNIA Public License 10*9e86db79SHyon Kim * Version 1.0 (the "License"); you may not use this file except in 11*9e86db79SHyon Kim * compliance with the License. You may obtain a copy of the License at 12*9e86db79SHyon Kim * 13*9e86db79SHyon Kim * /http://www.snia.org/English/Resources/Code/OpenSource.html 14*9e86db79SHyon Kim * 15*9e86db79SHyon Kim * Software distributed under the License is distributed on an "AS IS" 16*9e86db79SHyon Kim * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 17*9e86db79SHyon Kim * the License for the specific language governing rights and limitations 18*9e86db79SHyon Kim * under the License. 19*9e86db79SHyon Kim * 20*9e86db79SHyon Kim * The Original Code for SM-HBA API general header file 21*9e86db79SHyon Kim * 22*9e86db79SHyon Kim * The Initial Developer of the Original Code is: 23*9e86db79SHyon Kim * Benjamin F. Kuo, Troika Networks, Inc. (benk@troikanetworks.com) 24*9e86db79SHyon Kim * 25*9e86db79SHyon Kim * Contributor(s): 26*9e86db79SHyon Kim * Tuan Lam, QLogic Corp. (t_lam@qlc.com) 27*9e86db79SHyon Kim * Dan Willie, Emulex Corp. (Dan.Willie@emulex.com) 28*9e86db79SHyon Kim * Dixon Hutchinson, Legato Systems, Inc. (dhutchin@legato.com) 29*9e86db79SHyon Kim * David Dillard, VERITAS Software Corp. (david.dillard@veritas.com) 30*9e86db79SHyon Kim * 31*9e86db79SHyon Kim * **************************************************************************** 32*9e86db79SHyon Kim * 33*9e86db79SHyon Kim * Adding on SM-HBA related definitions. 34*9e86db79SHyon Kim * 35*9e86db79SHyon Kim * - Includes the original HBA API header. 36*9e86db79SHyon Kim * - SMHBA_* interfaces and structures are defined. 37*9e86db79SHyon Kim * 38*9e86db79SHyon Kim * **************************************************************************** 39*9e86db79SHyon Kim */ 40*9e86db79SHyon Kim /* 41*9e86db79SHyon Kim * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 42*9e86db79SHyon Kim * Use is subject to license terms. 43*9e86db79SHyon Kim */ 44*9e86db79SHyon Kim 45*9e86db79SHyon Kim #ifndef _SMHBAAPI_H_ 46*9e86db79SHyon Kim #define _SMHBAAPI_H_ 47*9e86db79SHyon Kim 48*9e86db79SHyon Kim #ifdef __cplusplus 49*9e86db79SHyon Kim extern "C" { 50*9e86db79SHyon Kim #endif 51*9e86db79SHyon Kim 52*9e86db79SHyon Kim #include <hbaapi.h> 53*9e86db79SHyon Kim 54*9e86db79SHyon Kim /* Library version string */ 55*9e86db79SHyon Kim #define SMHBA_LIBVERSION 1 56*9e86db79SHyon Kim 57*9e86db79SHyon Kim /* 58*9e86db79SHyon Kim * A SCSI function was requested at a time when issuing the requested command 59*9e86db79SHyon Kim * would cause a SCSI overlapped command condition (see SAM-3) 60*9e86db79SHyon Kim */ 61*9e86db79SHyon Kim #define HBA_STATUS_ERROR_TARGET_BUSY 30 62*9e86db79SHyon Kim /* SM-HBA 6.2 Status Return Values */ 63*9e86db79SHyon Kim /* A call was made to HBA_FreeLibrary when no library was loaded */ 64*9e86db79SHyon Kim #define HBA_STATUS_ERROR_NOT_LOADED 31 65*9e86db79SHyon Kim /* A call was made to HBA_LoadLibrary when a library was already loaded */ 66*9e86db79SHyon Kim #define HBA_STATUS_ERROR_ALREADY_LOADED 32 67*9e86db79SHyon Kim /* 68*9e86db79SHyon Kim * The Address Identifier specified in a call to HBA_SendRNIDV2 69*9e86db79SHyon Kim * violates access control rules * for that call. 70*9e86db79SHyon Kim */ 71*9e86db79SHyon Kim #define HBA_STATUS_ERROR_ILLEGAL_FCID 33 72*9e86db79SHyon Kim #define HBA_STATUS_ERROR_NOT_ASCSIDEVICE 34 73*9e86db79SHyon Kim #define HBA_STATUS_ERROR_INVALID_PROTOCOL_TYPE 35 74*9e86db79SHyon Kim #define HBA_STATUS_ERROR_BAD_EVENT_TYPE 36 75*9e86db79SHyon Kim 76*9e86db79SHyon Kim 77*9e86db79SHyon Kim /* SM-HBA 6.4.1.1 Port Type */ 78*9e86db79SHyon Kim #define HBA_PORTTYPE_SASDEVICE 30 /* SAS (SSP or STP) */ 79*9e86db79SHyon Kim #define HBA_PORTTYPE_SATADEVICE 31 /* SATA Device, i.e. Direct Attach SATA */ 80*9e86db79SHyon Kim #define HBA_PORTTYPE_SASEXPANDER 32 /* SAS Expander */ 81*9e86db79SHyon Kim 82*9e86db79SHyon Kim /* SM-HBA 6.4.1.2 Port State */ 83*9e86db79SHyon Kim #define HBA_PORTSTATE_DEGRADED 9 /* Degraded, but Operational mode */ 84*9e86db79SHyon Kim 85*9e86db79SHyon Kim /* SM-HBA 6.11.1.3 Port Speed */ 86*9e86db79SHyon Kim #define HBA_PORTSPEED_4GBIT 8 /* 4 GBit / sec */ 87*9e86db79SHyon Kim 88*9e86db79SHyon Kim /* SM-HBA 6.1 Basic Attributes Types */ 89*9e86db79SHyon Kim typedef struct SMHBA_scsilun {HBA_UINT8 lun[8]; } 90*9e86db79SHyon Kim SMHBA_SCSILUN, *PSMHBA_SCSILUN; 91*9e86db79SHyon Kim /* A byte array representation of a SCSI */ 92*9e86db79SHyon Kim /* LUN (see SAM-4). The first byte of the */ 93*9e86db79SHyon Kim /* LUN shall be in the first byte of the */ 94*9e86db79SHyon Kim /* array, and successive bytes of the SCSI */ 95*9e86db79SHyon Kim /* LUN shall be in successive bytes of the */ 96*9e86db79SHyon Kim /* array. */ 97*9e86db79SHyon Kim typedef unsigned long HBA_SCSILUN; 98*9e86db79SHyon Kim /* A 64 bit unsigned integer representation */ 99*9e86db79SHyon Kim /* of a SCSI LUN (see SAM-4); */ 100*9e86db79SHyon Kim /* may use OS-specific typedef. */ 101*9e86db79SHyon Kim /* Byte zero of a SCSI LUN shall be stored */ 102*9e86db79SHyon Kim /* in the lowest memory address */ 103*9e86db79SHyon Kim /* of the unsigned 64-bit integer value, */ 104*9e86db79SHyon Kim /* and successive bytes of the SCSI LUN */ 105*9e86db79SHyon Kim /* shall be stored in successively higher memory */ 106*9e86db79SHyon Kim /* addresses of the unsigned 64-bit intege value. */ 107*9e86db79SHyon Kim /* Note that computers often do not store */ 108*9e86db79SHyon Kim /* a byte array in memory in the same order */ 109*9e86db79SHyon Kim /* as they store an integer. */ 110*9e86db79SHyon Kim /* This standard requires storage as a byte array */ 111*9e86db79SHyon Kim 112*9e86db79SHyon Kim 113*9e86db79SHyon Kim /* SM-HBA 6.3.1 Generic Adapter Attribute */ 114*9e86db79SHyon Kim typedef struct SMHBA_AdapterAttributes { 115*9e86db79SHyon Kim char Manufacturer[64]; 116*9e86db79SHyon Kim char SerialNumber[64]; 117*9e86db79SHyon Kim char Model[256]; 118*9e86db79SHyon Kim char ModelDescription[256]; 119*9e86db79SHyon Kim char HardwareVersion[256]; 120*9e86db79SHyon Kim char DriverVersion[256]; 121*9e86db79SHyon Kim char OptionROMVersion[256]; 122*9e86db79SHyon Kim char FirmwareVersion[256]; 123*9e86db79SHyon Kim HBA_UINT32 VendorSpecificID; 124*9e86db79SHyon Kim char DriverName[256]; 125*9e86db79SHyon Kim char HBASymbolicName[256]; 126*9e86db79SHyon Kim char RedundantOptionROMVersion[256]; 127*9e86db79SHyon Kim char RedundantFirmwareVersion[256]; 128*9e86db79SHyon Kim } SMHBA_ADAPTERATTRIBUTES, *PSMHBA_ADAPTERATTRIBUTES; 129*9e86db79SHyon Kim 130*9e86db79SHyon Kim /* SM-HBA 6.4.6 SMHBA FC Port Attributes */ 131*9e86db79SHyon Kim typedef struct SMHBA_FC_Port { 132*9e86db79SHyon Kim HBA_WWN NodeWWN; 133*9e86db79SHyon Kim HBA_WWN PortWWN; 134*9e86db79SHyon Kim HBA_UINT32 FcId; 135*9e86db79SHyon Kim HBA_COS PortSupportedClassofService; 136*9e86db79SHyon Kim HBA_FC4TYPES PortSupportedFc4Types; 137*9e86db79SHyon Kim HBA_FC4TYPES PortActiveFc4Types; 138*9e86db79SHyon Kim HBA_WWN FabricName; 139*9e86db79SHyon Kim char PortSymbolicName[256]; 140*9e86db79SHyon Kim HBA_UINT32 NumberofDiscoveredPorts; 141*9e86db79SHyon Kim HBA_UINT8 NumberofPhys; 142*9e86db79SHyon Kim }SMHBA_FC_PORT, *PSMHBA_FC_PORT; 143*9e86db79SHyon Kim 144*9e86db79SHyon Kim /* SM-HBA 6.4.7.1 HBA_SASPortProtocol */ 145*9e86db79SHyon Kim typedef HBA_UINT32 HBA_SASPORTPROTOCOL; 146*9e86db79SHyon Kim #define HBA_SASPORTPROTOCOL_SSP 1 /* Serial SCSI Protocol Port */ 147*9e86db79SHyon Kim #define HBA_SASPORTPROTOCOL_STP 2 /* Serial ATA Tunneling Protocol Port */ 148*9e86db79SHyon Kim #define HBA_SASPORTPROTOCOL_SMP 4 /* Serial Management Protocol Port */ 149*9e86db79SHyon Kim /* SATA Device, Direct Attached or anywhere in the domain. */ 150*9e86db79SHyon Kim #define HBA_SASPORTPROTOCOL_SATA 8 151*9e86db79SHyon Kim 152*9e86db79SHyon Kim /* SM-HBA 6.4.8 SMHBA SAS Port Attributes */ 153*9e86db79SHyon Kim typedef struct SMHBA_SAS_Port { 154*9e86db79SHyon Kim HBA_SASPORTPROTOCOL PortProtocol; 155*9e86db79SHyon Kim HBA_WWN LocalSASAddress; 156*9e86db79SHyon Kim HBA_WWN AttachedSASAddress; 157*9e86db79SHyon Kim HBA_UINT32 NumberofDiscoveredPorts; 158*9e86db79SHyon Kim HBA_UINT32 NumberofPhys; 159*9e86db79SHyon Kim } SMHBA_SAS_PORT, *PSMHBA_SAS_PORT; 160*9e86db79SHyon Kim 161*9e86db79SHyon Kim /* SM-HBA 6.4.2 Generic Port Attributes */ 162*9e86db79SHyon Kim typedef union SMHBA_Port { 163*9e86db79SHyon Kim SMHBA_FC_PORT *FCPort; 164*9e86db79SHyon Kim SMHBA_SAS_PORT *SASPort; 165*9e86db79SHyon Kim } SMHBA_PORT, *PSMHBA_PORT; 166*9e86db79SHyon Kim 167*9e86db79SHyon Kim typedef struct SMHBA_PortAttributes { 168*9e86db79SHyon Kim HBA_PORTTYPE PortType; 169*9e86db79SHyon Kim HBA_PORTSTATE PortState; 170*9e86db79SHyon Kim char OSDeviceName[256]; 171*9e86db79SHyon Kim SMHBA_PORT PortSpecificAttribute; 172*9e86db79SHyon Kim } SMHBA_PORTATTRIBUTES, *PSMHBA_PORTATTRIBUTES; 173*9e86db79SHyon Kim 174*9e86db79SHyon Kim /* SM-HBA 6.5.1.1 FC Phy Speed */ 175*9e86db79SHyon Kim typedef HBA_UINT32 HBA_FCPHYSPEED; 176*9e86db79SHyon Kim /* Unknown transceiver incapable of reporting */ 177*9e86db79SHyon Kim #define HBA_FCSPEED_UNKNOWN 0 178*9e86db79SHyon Kim /* 179*9e86db79SHyon Kim * The following are redundantly defined in SM-HBA 6.11.1.3 Port Speed. 180*9e86db79SHyon Kim * #define HBA_PORTSPEED_1GBIT 1 1 GBit/sec 181*9e86db79SHyon Kim * #define HBA_PORTSPEED_2GBIT 2 2 GBit/sec 182*9e86db79SHyon Kim * #define HBA_PORTSPEED_10GBIT 4 10 GBit/sec 183*9e86db79SHyon Kim * #define HBA_PORTSPEED_4GBIT 8 4 GBit/sec 184*9e86db79SHyon Kim */ 185*9e86db79SHyon Kim #define HBA_FCPHYSPEED_8GBIT 16 /* 8 GBit/sec */ 186*9e86db79SHyon Kim #define HBA_FCPHYSPEED_16GBIT 32 /* 16 GBit/sec */ 187*9e86db79SHyon Kim /* 188*9e86db79SHyon Kim * The following conflicts with HBA API 189*9e86db79SHyon Kim * #define HBA_PORTSPEED_NOT_NEGOTIATED (1<<15) Speed not established 190*9e86db79SHyon Kim */ 191*9e86db79SHyon Kim 192*9e86db79SHyon Kim /* SM-HBA 6.6.1.2 SM-HBA FC Phy Type */ 193*9e86db79SHyon Kim typedef HBA_UINT8 HBA_FCPHYTYPE; 194*9e86db79SHyon Kim #define HBA_FCPHYTYPE_UNKNOWN 1 /* Unknown Phy type */ 195*9e86db79SHyon Kim #define HBA_FCPHYTYPE_OPTICAL 2 /* Optical Phy */ 196*9e86db79SHyon Kim #define HBA_FCPHYTYPE_COPPER 4 /* Copper Phy */ 197*9e86db79SHyon Kim 198*9e86db79SHyon Kim /* SM-HBA 6.5.2 SM-HBA FC Phy Attributes */ 199*9e86db79SHyon Kim typedef struct SMHBA_FC_Phy { 200*9e86db79SHyon Kim HBA_FCPHYSPEED PhySupportedSpeed; /* PhySupportedSpeed */ 201*9e86db79SHyon Kim HBA_FCPHYSPEED PhySpeed; /* PhySpeed */ 202*9e86db79SHyon Kim HBA_FCPHYTYPE PhyType; 203*9e86db79SHyon Kim HBA_UINT32 MaxFrameSize; /* MaxFrameSize */ 204*9e86db79SHyon Kim } SMHBA_FC_PHY, *PSMHBA_FC_PHY; 205*9e86db79SHyon Kim 206*9e86db79SHyon Kim /* SM-HBA 6.5.4 SAS PHY Attribute Data Declaration */ 207*9e86db79SHyon Kim typedef HBA_UINT32 HBA_SASPHYSPEED; 208*9e86db79SHyon Kim 209*9e86db79SHyon Kim #define HBA_SASSTATE_UNKNOWN 0x00 /* Phy is enabled. Speed is unknown */ 210*9e86db79SHyon Kim #define HBA_SASSTATE_DISABLED 0x01 /* Phy is disabled. */ 211*9e86db79SHyon Kim /* Phy is enabled. But failed speed negotiation. */ 212*9e86db79SHyon Kim #define HBA_SASSTATE_FAILED 0x02 213*9e86db79SHyon Kim /* 214*9e86db79SHyon Kim * Phy is enabled. Detected a SATA device and entered the SATA Spinup hold 215*9e86db79SHyon Kim * state. 216*9e86db79SHyon Kim */ 217*9e86db79SHyon Kim #define HBA_SASSTATE_SATASPINUP 0x03 218*9e86db79SHyon Kim /* The phy is attached to a Port Selector (see SATA-2.6). */ 219*9e86db79SHyon Kim #define HBA_SASSTATE_SATAPORTSEL 0x04 220*9e86db79SHyon Kim #define HBA_SASSPEED_1_5GBIT 0x08 /* 1.5 GBit/sec */ 221*9e86db79SHyon Kim #define HBA_SASSPEED_3GBIT 0x09 /* 3 GBit/sec */ 222*9e86db79SHyon Kim #define HBA_SASSPEED_6GBIT 0x0a /* 6 GBit/sec */ 223*9e86db79SHyon Kim 224*9e86db79SHyon Kim /* SM-HBA 6.5.5 SAS Phy Attribute */ 225*9e86db79SHyon Kim typedef struct SMHBA_SAS_Phy { 226*9e86db79SHyon Kim HBA_UINT8 PhyIdentifier; 227*9e86db79SHyon Kim HBA_SASPHYSPEED NegotiatedLinkRate; 228*9e86db79SHyon Kim HBA_SASPHYSPEED ProgrammedMinLinkRate; 229*9e86db79SHyon Kim HBA_SASPHYSPEED HardwareMinLinkRate; 230*9e86db79SHyon Kim HBA_SASPHYSPEED ProgrammedMaxLinkRate; 231*9e86db79SHyon Kim HBA_SASPHYSPEED HardwareMaxLinkRate; 232*9e86db79SHyon Kim HBA_WWN domainPortWWN; 233*9e86db79SHyon Kim } SMHBA_SAS_PHY, *PSMHBA_SAS_PHY; 234*9e86db79SHyon Kim 235*9e86db79SHyon Kim /* SM-HBA 6.6.1.1 Protocol Statistics Data Declarations */ 236*9e86db79SHyon Kim /* Statistical counters for FC-4, SSP, STP, SMP protocols */ 237*9e86db79SHyon Kim typedef struct SMHBA_ProtocolStatistics { 238*9e86db79SHyon Kim HBA_INT64 SecondsSinceLastReset; 239*9e86db79SHyon Kim HBA_INT64 InputRequests; 240*9e86db79SHyon Kim HBA_INT64 OutputRequests; 241*9e86db79SHyon Kim HBA_INT64 ControlRequests; 242*9e86db79SHyon Kim HBA_INT64 InputMegabytes; 243*9e86db79SHyon Kim HBA_INT64 OutputMegabytes; 244*9e86db79SHyon Kim } SMHBA_PROTOCOLSTATISTICS, *PSMHBA_PROTOCOLSTATISTICS; 245*9e86db79SHyon Kim 246*9e86db79SHyon Kim /* SM-HBA 6.6.2.1 Port Statistics Data Declarations */ 247*9e86db79SHyon Kim typedef struct SMHBA_PortStatistics { 248*9e86db79SHyon Kim HBA_INT64 SecondsSinceLastReset; 249*9e86db79SHyon Kim HBA_INT64 TxFrames; 250*9e86db79SHyon Kim HBA_INT64 TxWords; 251*9e86db79SHyon Kim HBA_INT64 RxFrames; 252*9e86db79SHyon Kim HBA_INT64 RxWords; 253*9e86db79SHyon Kim }SMHBA_PORTSTATISTICS, *PSMHBA_PORTSTATISTICS; 254*9e86db79SHyon Kim 255*9e86db79SHyon Kim /* SM-HBA 6.6.2.2 SAS Phy Statistics Data Declaration */ 256*9e86db79SHyon Kim typedef struct SMHBA_SASPhyStatistics { 257*9e86db79SHyon Kim HBA_INT64 SecondsSinceLastReset; 258*9e86db79SHyon Kim HBA_INT64 TxFrames; 259*9e86db79SHyon Kim HBA_INT64 TxWords; 260*9e86db79SHyon Kim HBA_INT64 RxFrames; 261*9e86db79SHyon Kim HBA_INT64 RxWords; 262*9e86db79SHyon Kim HBA_INT64 InvalidDwordCount; 263*9e86db79SHyon Kim HBA_INT64 RunningDisparityErrorCount; 264*9e86db79SHyon Kim HBA_INT64 LossofDwordSyncCount; 265*9e86db79SHyon Kim HBA_INT64 PhyResetProblemCount; 266*9e86db79SHyon Kim } SMHBA_SASPHYSTATISTICS, *PSMHBA_SASPHYSTATISTICS; 267*9e86db79SHyon Kim 268*9e86db79SHyon Kim /* SM-HBA 6.6.2.4 FC Phy Statistics Data Declaration */ 269*9e86db79SHyon Kim /* Statistical counters for FC-0, FC-1, and FC-2 */ 270*9e86db79SHyon Kim typedef struct SMHBA_FCPhyStatistics { 271*9e86db79SHyon Kim HBA_INT64 SecondsSinceLastReset; 272*9e86db79SHyon Kim HBA_INT64 TxFrames; 273*9e86db79SHyon Kim HBA_INT64 TxWords; 274*9e86db79SHyon Kim HBA_INT64 RxFrames; 275*9e86db79SHyon Kim HBA_INT64 RxWords; 276*9e86db79SHyon Kim HBA_INT64 LIPCount; 277*9e86db79SHyon Kim HBA_INT64 NOSCount; 278*9e86db79SHyon Kim HBA_INT64 ErrorFrames; 279*9e86db79SHyon Kim HBA_INT64 DumpedFrames; 280*9e86db79SHyon Kim HBA_INT64 LinkFailureCount; 281*9e86db79SHyon Kim HBA_INT64 LossOfSyncCount; 282*9e86db79SHyon Kim HBA_INT64 LossOfSignalCount; 283*9e86db79SHyon Kim HBA_INT64 PrimitiveSeqProtocolErrCount; 284*9e86db79SHyon Kim HBA_INT64 InvalidTxWordCount; 285*9e86db79SHyon Kim HBA_INT64 InvalidCRCCount; 286*9e86db79SHyon Kim }SMHBA_FCPHYSTATISTICS, *PSMHBA_FCPHYSTATISTICS; 287*9e86db79SHyon Kim 288*9e86db79SHyon Kim /* SM-HBA 6.6.2.1 Phy Statistics Data Declaration */ 289*9e86db79SHyon Kim typedef union SMHBA_PhyStatistics { 290*9e86db79SHyon Kim SMHBA_SASPHYSTATISTICS *SASPhyStatistics; 291*9e86db79SHyon Kim SMHBA_FCPHYSTATISTICS *FCPhyStatistics; 292*9e86db79SHyon Kim } SMHBA_PHYSTATISTICS, *PSMHBA_PHYSTATISTICS; 293*9e86db79SHyon Kim 294*9e86db79SHyon Kim /* SM-HBA 6.7.1.1 SMHBA_BIND_CAPABILITY */ 295*9e86db79SHyon Kim typedef HBA_UINT32 SMHBA_BIND_CAPABILITY; 296*9e86db79SHyon Kim #define SMHBA_CAN_BIND_TO_WWPN 0x0001 297*9e86db79SHyon Kim #define SMHBA_CAN_BIND_TO_LUID 0x0002 298*9e86db79SHyon Kim #define SMHBA_CAN_BIND_ANY_LUNS 0x0400 299*9e86db79SHyon Kim #define SMHBA_CAN_BIND_AUTOMAP 0x0800 300*9e86db79SHyon Kim 301*9e86db79SHyon Kim /* SM-HBA 6.7.1.2 SMHBA_BIND_TYPE */ 302*9e86db79SHyon Kim typedef HBA_UINT32 SMHBA_BIND_TYPE; 303*9e86db79SHyon Kim #define SMHBA_BIND_TO_WWPN 0x0001 304*9e86db79SHyon Kim #define SMHBA_BIND_TO_LUID 0x0002 305*9e86db79SHyon Kim 306*9e86db79SHyon Kim /* SM-HBA 6.7.1.3 SMHBA_ScsiId */ 307*9e86db79SHyon Kim typedef struct SMHBA_ScsiId { 308*9e86db79SHyon Kim char OSDeviceName[256]; 309*9e86db79SHyon Kim HBA_UINT32 ScsiBusNumber; 310*9e86db79SHyon Kim HBA_UINT32 ScsiTargetNumber; 311*9e86db79SHyon Kim HBA_UINT32 ScsiOSLun; 312*9e86db79SHyon Kim } SMHBA_SCSIID, *PSMHBA_SCSIID; 313*9e86db79SHyon Kim 314*9e86db79SHyon Kim /* SM-HBA 6.7.1.4 SMHBA_LUID */ 315*9e86db79SHyon Kim typedef struct SMHBA_LUID { 316*9e86db79SHyon Kim char buffer[256]; 317*9e86db79SHyon Kim } SMHBA_LUID, *PSMHBA_LUID; 318*9e86db79SHyon Kim 319*9e86db79SHyon Kim /* SM-HBA 6.7.1.5 SMHBA_PORTLUN */ 320*9e86db79SHyon Kim typedef struct SMHBA_PORTLUN { 321*9e86db79SHyon Kim HBA_WWN PortWWN; 322*9e86db79SHyon Kim HBA_WWN domainPortWWN; 323*9e86db79SHyon Kim SMHBA_SCSILUN TargetLun; 324*9e86db79SHyon Kim } SMHBA_PORTLUN, *PSMHBA_PORTLUN; 325*9e86db79SHyon Kim 326*9e86db79SHyon Kim /* SM-HBA 6.7.1.6 Composite types */ 327*9e86db79SHyon Kim typedef struct SMHBA_ScsiEntry { 328*9e86db79SHyon Kim SMHBA_SCSIID ScsiId; 329*9e86db79SHyon Kim SMHBA_PORTLUN PortLun; 330*9e86db79SHyon Kim SMHBA_LUID LUID; 331*9e86db79SHyon Kim } SMHBA_SCSIENTRY, *PSMHBA_SCSIENTRY; 332*9e86db79SHyon Kim 333*9e86db79SHyon Kim typedef struct SMHBA_TargetMapping { 334*9e86db79SHyon Kim HBA_UINT32 NumberOfEntries; 335*9e86db79SHyon Kim SMHBA_SCSIENTRY entry[1]; /* Variable length array */ 336*9e86db79SHyon Kim } SMHBA_TARGETMAPPING, *PSMHBA_TARGETMAPPING; 337*9e86db79SHyon Kim 338*9e86db79SHyon Kim typedef struct SMHBA_BindingEntry { 339*9e86db79SHyon Kim SMHBA_BIND_TYPE type; 340*9e86db79SHyon Kim SMHBA_SCSIID ScsiId; 341*9e86db79SHyon Kim SMHBA_PORTLUN PortLun; 342*9e86db79SHyon Kim SMHBA_LUID LUID; 343*9e86db79SHyon Kim HBA_STATUS Status; 344*9e86db79SHyon Kim } SMHBA_BINDINGENTRY, *PSMHBA_BINDINGENTRY; 345*9e86db79SHyon Kim 346*9e86db79SHyon Kim typedef struct SMHBA_Binding { 347*9e86db79SHyon Kim HBA_UINT32 NumberOfEntries; 348*9e86db79SHyon Kim SMHBA_BINDINGENTRY entry[1]; /* Variable length array */ 349*9e86db79SHyon Kim } SMHBA_BINDING, *PSMHBA_BINDING; 350*9e86db79SHyon Kim 351*9e86db79SHyon Kim /* SM-HBA 6.9.5 Library Attribute Data Declarations */ 352*9e86db79SHyon Kim typedef struct SMHBA_LibraryAttributes { 353*9e86db79SHyon Kim char LibPath[256]; 354*9e86db79SHyon Kim char VName[256]; 355*9e86db79SHyon Kim char VVersion[256]; 356*9e86db79SHyon Kim struct { 357*9e86db79SHyon Kim int tm_mday; /* day of the month - [1 - 31] */ 358*9e86db79SHyon Kim int tm_mon; /* months since January - [0 - 11] */ 359*9e86db79SHyon Kim int tm_year; /* years since 1900 */ 360*9e86db79SHyon Kim } build_date; 361*9e86db79SHyon Kim } SMHBA_LIBRARYATTRIBUTES, *PSMHBA_LIBRARYATTRIBUTES; 362*9e86db79SHyon Kim 363*9e86db79SHyon Kim /* SM-HBA 6.8.1 Asynchronous Event Data Declarations */ 364*9e86db79SHyon Kim #define HBA_EVENT_PORT_BROADCAST_CHANGE 0x205 365*9e86db79SHyon Kim #define HBA_EVENT_PORT_BROADCAST_SES 0x208 366*9e86db79SHyon Kim #define HBA_EVENT_PORT_BROADCAST_D24_0 0x206 367*9e86db79SHyon Kim #define HBA_EVENT_PORT_BROADCAST_D27_4 0x207 368*9e86db79SHyon Kim #define HBA_EVENT_PORT_BROADCAST_D01_4 0x209 369*9e86db79SHyon Kim #define HBA_EVENT_PORT_BROADCAST_D04_7 0x20A 370*9e86db79SHyon Kim #define HBA_EVENT_PORT_BROADCAST_D16_7 0x20B 371*9e86db79SHyon Kim #define HBA_EVENT_PORT_BROADCAST_D29_7 0x20C 372*9e86db79SHyon Kim #define HBA_EVENT_PORT_ALL 0x2FF 373*9e86db79SHyon Kim 374*9e86db79SHyon Kim /* SM-HBA specific entry points. */ 375*9e86db79SHyon Kim 376*9e86db79SHyon Kim HBA_UINT32 SMHBA_GetVersion(); 377*9e86db79SHyon Kim 378*9e86db79SHyon Kim HBA_UINT32 SMHBA_GetWrapperLibraryAttributes( 379*9e86db79SHyon Kim SMHBA_LIBRARYATTRIBUTES *attributes 380*9e86db79SHyon Kim ); 381*9e86db79SHyon Kim 382*9e86db79SHyon Kim HBA_UINT32 SMHBA_GetVendorLibraryAttributes( 383*9e86db79SHyon Kim HBA_UINT32 adapter_index, 384*9e86db79SHyon Kim SMHBA_LIBRARYATTRIBUTES *attributes 385*9e86db79SHyon Kim ); 386*9e86db79SHyon Kim 387*9e86db79SHyon Kim HBA_STATUS SMHBA_GetAdapterAttributes( 388*9e86db79SHyon Kim HBA_HANDLE handle, 389*9e86db79SHyon Kim SMHBA_ADAPTERATTRIBUTES *pAdapterAttributes 390*9e86db79SHyon Kim ); 391*9e86db79SHyon Kim 392*9e86db79SHyon Kim HBA_STATUS SMHBA_GetNumberOfPorts( 393*9e86db79SHyon Kim HBA_HANDLE handle, 394*9e86db79SHyon Kim HBA_UINT32 *numberofports 395*9e86db79SHyon Kim ); 396*9e86db79SHyon Kim 397*9e86db79SHyon Kim HBA_STATUS SMHBA_GetPortType( 398*9e86db79SHyon Kim HBA_HANDLE handle, 399*9e86db79SHyon Kim HBA_UINT32 portindex, 400*9e86db79SHyon Kim HBA_PORTTYPE *porttype 401*9e86db79SHyon Kim ); 402*9e86db79SHyon Kim 403*9e86db79SHyon Kim HBA_STATUS SMHBA_GetAdapterPortAttributes( 404*9e86db79SHyon Kim HBA_HANDLE handle, 405*9e86db79SHyon Kim HBA_UINT32 portindex, 406*9e86db79SHyon Kim SMHBA_PORTATTRIBUTES *portattributes 407*9e86db79SHyon Kim ); 408*9e86db79SHyon Kim 409*9e86db79SHyon Kim HBA_STATUS SMHBA_GetDiscoveredPortAttributes( 410*9e86db79SHyon Kim HBA_HANDLE handle, 411*9e86db79SHyon Kim HBA_UINT32 portindex, 412*9e86db79SHyon Kim HBA_UINT32 discoveredportindex, 413*9e86db79SHyon Kim SMHBA_PORTATTRIBUTES *porattributes 414*9e86db79SHyon Kim ); 415*9e86db79SHyon Kim 416*9e86db79SHyon Kim HBA_STATUS SMHBA_GetPortAttributesByWWN( 417*9e86db79SHyon Kim HBA_HANDLE handle, 418*9e86db79SHyon Kim HBA_WWN portWWN, 419*9e86db79SHyon Kim HBA_WWN domainPortWWN, 420*9e86db79SHyon Kim SMHBA_PORTATTRIBUTES *portattributes 421*9e86db79SHyon Kim ); 422*9e86db79SHyon Kim 423*9e86db79SHyon Kim HBA_STATUS SMHBA_GetPortAttributesByWWN( 424*9e86db79SHyon Kim HBA_HANDLE handle, 425*9e86db79SHyon Kim HBA_WWN portWWN, 426*9e86db79SHyon Kim HBA_WWN domainPortWWN, 427*9e86db79SHyon Kim SMHBA_PORTATTRIBUTES *portattributes 428*9e86db79SHyon Kim ); 429*9e86db79SHyon Kim 430*9e86db79SHyon Kim HBA_STATUS SMHBA_GetFCPhyAttributes( 431*9e86db79SHyon Kim HBA_HANDLE handle, 432*9e86db79SHyon Kim HBA_UINT32 portindex, 433*9e86db79SHyon Kim HBA_UINT32 phyindex, 434*9e86db79SHyon Kim SMHBA_FC_PHY *phytype 435*9e86db79SHyon Kim ); 436*9e86db79SHyon Kim 437*9e86db79SHyon Kim HBA_STATUS SMHBA_GetSASPhyAttributes( 438*9e86db79SHyon Kim HBA_HANDLE handle, 439*9e86db79SHyon Kim HBA_UINT32 portindex, 440*9e86db79SHyon Kim HBA_UINT32 phyindex, 441*9e86db79SHyon Kim SMHBA_SAS_PHY *phytype 442*9e86db79SHyon Kim ); 443*9e86db79SHyon Kim 444*9e86db79SHyon Kim HBA_STATUS SMHBA_GetProtocolStatistics( 445*9e86db79SHyon Kim HBA_HANDLE handle, 446*9e86db79SHyon Kim HBA_UINT32 portindex, 447*9e86db79SHyon Kim HBA_UINT32 protocoltype, 448*9e86db79SHyon Kim SMHBA_PROTOCOLSTATISTICS *pProtocolStatistics 449*9e86db79SHyon Kim ); 450*9e86db79SHyon Kim 451*9e86db79SHyon Kim HBA_STATUS SMHBA_GetPhyStatistics( 452*9e86db79SHyon Kim HBA_HANDLE handle, 453*9e86db79SHyon Kim HBA_UINT32 portindex, 454*9e86db79SHyon Kim HBA_UINT32 phyindex, 455*9e86db79SHyon Kim SMHBA_PHYSTATISTICS *pPhyStatistics 456*9e86db79SHyon Kim ); 457*9e86db79SHyon Kim 458*9e86db79SHyon Kim HBA_STATUS SMHBA_SendTEST( 459*9e86db79SHyon Kim HBA_HANDLE handle, 460*9e86db79SHyon Kim HBA_WWN hbaPortWWN, 461*9e86db79SHyon Kim HBA_WWN destWWN, 462*9e86db79SHyon Kim HBA_UINT32 destFCID, 463*9e86db79SHyon Kim void *pReqBuffer, 464*9e86db79SHyon Kim HBA_UINT32 ReqBufferSize 465*9e86db79SHyon Kim ); 466*9e86db79SHyon Kim 467*9e86db79SHyon Kim HBA_STATUS SMHBA_SendECHO( 468*9e86db79SHyon Kim HBA_HANDLE handle, 469*9e86db79SHyon Kim HBA_WWN hbaPortWWN, 470*9e86db79SHyon Kim HBA_WWN destWWN, 471*9e86db79SHyon Kim HBA_UINT32 destFCID, 472*9e86db79SHyon Kim void *pReqBuffer, 473*9e86db79SHyon Kim HBA_UINT32 ReqBufferSize, 474*9e86db79SHyon Kim void *pRspBuffer, 475*9e86db79SHyon Kim HBA_UINT32 *pRspBufferSize 476*9e86db79SHyon Kim ); 477*9e86db79SHyon Kim 478*9e86db79SHyon Kim HBA_UINT32 SMHBA_SendSMPPassThru( 479*9e86db79SHyon Kim HBA_HANDLE handle, 480*9e86db79SHyon Kim HBA_WWN hbaportWWN, 481*9e86db79SHyon Kim HBA_WWN destportWWN, 482*9e86db79SHyon Kim HBA_WWN domainPortWWN, 483*9e86db79SHyon Kim void *pReqBuffer, 484*9e86db79SHyon Kim HBA_UINT32 ReqBufferSize, 485*9e86db79SHyon Kim void *pRspBuffer, 486*9e86db79SHyon Kim HBA_UINT32 *pRspBufferSize 487*9e86db79SHyon Kim ); 488*9e86db79SHyon Kim 489*9e86db79SHyon Kim HBA_STATUS SMHBA_GetBindingCapability( 490*9e86db79SHyon Kim HBA_HANDLE handle, 491*9e86db79SHyon Kim HBA_WWN hbaPortWWN, 492*9e86db79SHyon Kim HBA_WWN domainPortWWN, 493*9e86db79SHyon Kim SMHBA_BIND_CAPABILITY *pFlags 494*9e86db79SHyon Kim ); 495*9e86db79SHyon Kim 496*9e86db79SHyon Kim HBA_STATUS SMHBA_GetBindingSupport( 497*9e86db79SHyon Kim HBA_HANDLE handle, 498*9e86db79SHyon Kim HBA_WWN hbaPortWWN, 499*9e86db79SHyon Kim HBA_WWN domainPortWWN, 500*9e86db79SHyon Kim SMHBA_BIND_CAPABILITY *pFlags 501*9e86db79SHyon Kim ); 502*9e86db79SHyon Kim 503*9e86db79SHyon Kim HBA_STATUS SMHBA_SetBindingSupport( 504*9e86db79SHyon Kim HBA_HANDLE handle, 505*9e86db79SHyon Kim HBA_WWN hbaPortWWN, 506*9e86db79SHyon Kim HBA_WWN domainPortWWN, 507*9e86db79SHyon Kim SMHBA_BIND_CAPABILITY flags 508*9e86db79SHyon Kim ); 509*9e86db79SHyon Kim 510*9e86db79SHyon Kim HBA_STATUS SMHBA_GetTargetMapping( 511*9e86db79SHyon Kim HBA_HANDLE handle, 512*9e86db79SHyon Kim HBA_WWN hbaPortWWN, 513*9e86db79SHyon Kim HBA_WWN domainPortWWN, 514*9e86db79SHyon Kim SMHBA_TARGETMAPPING *pMapping 515*9e86db79SHyon Kim ); 516*9e86db79SHyon Kim 517*9e86db79SHyon Kim HBA_STATUS SMHBA_GetPersistentBinding( 518*9e86db79SHyon Kim HBA_HANDLE handle, 519*9e86db79SHyon Kim HBA_WWN hbaPortWWN, 520*9e86db79SHyon Kim HBA_WWN domainPortWWN, 521*9e86db79SHyon Kim SMHBA_BINDING *binding 522*9e86db79SHyon Kim ); 523*9e86db79SHyon Kim 524*9e86db79SHyon Kim HBA_STATUS SMHBA_SetPersistentBinding( 525*9e86db79SHyon Kim HBA_HANDLE handle, 526*9e86db79SHyon Kim HBA_WWN hbaPortWWN, 527*9e86db79SHyon Kim HBA_WWN domainPortWWN, 528*9e86db79SHyon Kim const SMHBA_BINDING *binding 529*9e86db79SHyon Kim ); 530*9e86db79SHyon Kim 531*9e86db79SHyon Kim HBA_STATUS SMHBA_RemovePersistentBinding( 532*9e86db79SHyon Kim HBA_HANDLE handle, 533*9e86db79SHyon Kim HBA_WWN hbaPortWWN, 534*9e86db79SHyon Kim HBA_WWN domainPortWWN, 535*9e86db79SHyon Kim const SMHBA_BINDING *binding 536*9e86db79SHyon Kim ); 537*9e86db79SHyon Kim 538*9e86db79SHyon Kim HBA_STATUS SMHBA_RemoveAllPersistentBindings( 539*9e86db79SHyon Kim HBA_HANDLE handle, 540*9e86db79SHyon Kim HBA_WWN hbaPortWWN, 541*9e86db79SHyon Kim HBA_WWN domainPortWWN 542*9e86db79SHyon Kim ); 543*9e86db79SHyon Kim 544*9e86db79SHyon Kim HBA_STATUS SMHBA_GetLUNStatistics( 545*9e86db79SHyon Kim HBA_HANDLE handle, 546*9e86db79SHyon Kim const HBA_SCSIID *lunit, 547*9e86db79SHyon Kim SMHBA_PROTOCOLSTATISTICS *statistics 548*9e86db79SHyon Kim ); 549*9e86db79SHyon Kim 550*9e86db79SHyon Kim HBA_STATUS SMHBA_ScsiInquiry( 551*9e86db79SHyon Kim HBA_HANDLE handle, 552*9e86db79SHyon Kim HBA_WWN hbaPortWWN, 553*9e86db79SHyon Kim HBA_WWN discoveredPortWWN, 554*9e86db79SHyon Kim HBA_WWN domainPortWWN, 555*9e86db79SHyon Kim SMHBA_SCSILUN smhbaLUN, 556*9e86db79SHyon Kim HBA_UINT8 CDB_Byte1, 557*9e86db79SHyon Kim HBA_UINT8 CDB_Byte2, 558*9e86db79SHyon Kim void *pRspBuffer, 559*9e86db79SHyon Kim HBA_UINT32 *pRspBufferSize, 560*9e86db79SHyon Kim HBA_UINT8 *pScsiStatus, 561*9e86db79SHyon Kim void *pSenseBuffer, 562*9e86db79SHyon Kim HBA_UINT32 *pSenseBufferSize 563*9e86db79SHyon Kim ); 564*9e86db79SHyon Kim 565*9e86db79SHyon Kim HBA_STATUS SMHBA_ScsiReportLUNs( 566*9e86db79SHyon Kim HBA_HANDLE handle, 567*9e86db79SHyon Kim HBA_WWN hbaPortWWN, 568*9e86db79SHyon Kim HBA_WWN discoveredPortWWN, 569*9e86db79SHyon Kim HBA_WWN domainPortWWN, 570*9e86db79SHyon Kim void *pRspBuffer, 571*9e86db79SHyon Kim HBA_UINT32 *pRspBufferSize, 572*9e86db79SHyon Kim HBA_UINT8 *pScsiStatus, 573*9e86db79SHyon Kim void *pSenseBuffer, 574*9e86db79SHyon Kim HBA_UINT32 *pSenseBufferSize 575*9e86db79SHyon Kim ); 576*9e86db79SHyon Kim 577*9e86db79SHyon Kim HBA_STATUS SMHBA_ScsiReadCapacity( 578*9e86db79SHyon Kim HBA_HANDLE handle, 579*9e86db79SHyon Kim HBA_WWN hbaPortWWN, 580*9e86db79SHyon Kim HBA_WWN discoveredPortWWN, 581*9e86db79SHyon Kim HBA_WWN domainPortWWN, 582*9e86db79SHyon Kim SMHBA_SCSILUN smhbaLUN, 583*9e86db79SHyon Kim void *pRspBuffer, 584*9e86db79SHyon Kim HBA_UINT32 *pRspBufferSize, 585*9e86db79SHyon Kim HBA_UINT8 *pScsiStatus, 586*9e86db79SHyon Kim void *pSenseBuffer, 587*9e86db79SHyon Kim HBA_UINT32 *pSenseBufferSize 588*9e86db79SHyon Kim ); 589*9e86db79SHyon Kim 590*9e86db79SHyon Kim HBA_STATUS SMHBA_RegisterForAdapterAddEvents( 591*9e86db79SHyon Kim void (*pCallback) ( 592*9e86db79SHyon Kim void *pData, 593*9e86db79SHyon Kim HBA_WWN portWWN, 594*9e86db79SHyon Kim HBA_UINT32 eventType), 595*9e86db79SHyon Kim void *pUserData, 596*9e86db79SHyon Kim HBA_CALLBACKHANDLE *pCallbackHandle 597*9e86db79SHyon Kim ); 598*9e86db79SHyon Kim 599*9e86db79SHyon Kim HBA_STATUS SMHBA_RegisterForAdapterEvents( 600*9e86db79SHyon Kim void (*pCallback) ( 601*9e86db79SHyon Kim void *pData, 602*9e86db79SHyon Kim HBA_WWN portWWN, 603*9e86db79SHyon Kim HBA_UINT32 eventType), 604*9e86db79SHyon Kim void *pUserData, 605*9e86db79SHyon Kim HBA_HANDLE handle, 606*9e86db79SHyon Kim HBA_CALLBACKHANDLE *pCallbackHandle 607*9e86db79SHyon Kim ); 608*9e86db79SHyon Kim 609*9e86db79SHyon Kim HBA_STATUS SMHBA_RegisterForAdapterPortEvents( 610*9e86db79SHyon Kim void (*pCallback) ( 611*9e86db79SHyon Kim void *pData, 612*9e86db79SHyon Kim HBA_WWN portWWN, 613*9e86db79SHyon Kim HBA_UINT32 eventType, 614*9e86db79SHyon Kim HBA_UINT32 fabricPortID), 615*9e86db79SHyon Kim void *pUserData, 616*9e86db79SHyon Kim HBA_HANDLE handle, 617*9e86db79SHyon Kim HBA_WWN portWWN, 618*9e86db79SHyon Kim HBA_UINT32 specificEventType, 619*9e86db79SHyon Kim HBA_CALLBACKHANDLE *pCallbackHandle 620*9e86db79SHyon Kim ); 621*9e86db79SHyon Kim 622*9e86db79SHyon Kim HBA_STATUS SMHBA_RegisterForAdapterPortStatEvents( 623*9e86db79SHyon Kim void (*pCallback) ( 624*9e86db79SHyon Kim void *pData, 625*9e86db79SHyon Kim HBA_WWN portWWN, 626*9e86db79SHyon Kim HBA_UINT32 protocolType, 627*9e86db79SHyon Kim HBA_UINT32 eventType), 628*9e86db79SHyon Kim void *pUserData, 629*9e86db79SHyon Kim HBA_HANDLE handle, 630*9e86db79SHyon Kim HBA_WWN portWWN, 631*9e86db79SHyon Kim HBA_UINT32 protocolType, 632*9e86db79SHyon Kim SMHBA_PROTOCOLSTATISTICS stats, 633*9e86db79SHyon Kim HBA_UINT32 statType, 634*9e86db79SHyon Kim HBA_CALLBACKHANDLE *pCallbackHandle 635*9e86db79SHyon Kim ); 636*9e86db79SHyon Kim 637*9e86db79SHyon Kim HBA_STATUS SMHBA_RegisterForAdapterPhyStatEvents( 638*9e86db79SHyon Kim void (*pCallback) ( 639*9e86db79SHyon Kim void *pData, 640*9e86db79SHyon Kim HBA_WWN portWWN, 641*9e86db79SHyon Kim HBA_UINT32 phyIndex, 642*9e86db79SHyon Kim HBA_UINT32 eventType), 643*9e86db79SHyon Kim void *pUserData, 644*9e86db79SHyon Kim HBA_HANDLE handle, 645*9e86db79SHyon Kim HBA_WWN portWWN, 646*9e86db79SHyon Kim HBA_UINT32 phyIndex, 647*9e86db79SHyon Kim SMHBA_PHYSTATISTICS stats, 648*9e86db79SHyon Kim HBA_UINT32 statType, 649*9e86db79SHyon Kim HBA_CALLBACKHANDLE *pCallbackHandle 650*9e86db79SHyon Kim ); 651*9e86db79SHyon Kim 652*9e86db79SHyon Kim HBA_STATUS SMHBA_RegisterForTargetEvents( 653*9e86db79SHyon Kim void (*pCallback) ( 654*9e86db79SHyon Kim void *pData, 655*9e86db79SHyon Kim HBA_WWN hbaPortWWN, 656*9e86db79SHyon Kim HBA_WWN discoveredPortWWN, 657*9e86db79SHyon Kim HBA_WWN domainPortWWN, 658*9e86db79SHyon Kim HBA_UINT32 eventType), 659*9e86db79SHyon Kim void *pUserData, 660*9e86db79SHyon Kim HBA_HANDLE handle, 661*9e86db79SHyon Kim HBA_WWN hbaPortWWN, 662*9e86db79SHyon Kim HBA_WWN discoveredPortWWN, 663*9e86db79SHyon Kim HBA_WWN domainPortWWN, 664*9e86db79SHyon Kim HBA_CALLBACKHANDLE *pCallbackHandle, 665*9e86db79SHyon Kim HBA_UINT32 allTargets 666*9e86db79SHyon Kim ); 667*9e86db79SHyon Kim 668*9e86db79SHyon Kim #ifdef __cplusplus 669*9e86db79SHyon Kim } 670*9e86db79SHyon Kim #endif 671*9e86db79SHyon Kim 672*9e86db79SHyon Kim #endif /* _SMHBAAPI_H_ */ 673