xref: /illumos-gate/usr/src/lib/smhba/common/smhbaapi.h (revision 62877672)
19e86db79SHyon Kim /*
29e86db79SHyon Kim  * ****************************************************************************
39e86db79SHyon Kim  *
49e86db79SHyon Kim  * Description
59e86db79SHyon Kim  *	smhbaapi.h - general header file for client
69e86db79SHyon Kim  *	and library developers
79e86db79SHyon Kim  *
89e86db79SHyon Kim  * License:
99e86db79SHyon Kim  *	The contents of this file are subject to the SNIA Public License
109e86db79SHyon Kim  *	Version 1.0 (the "License"); you may not use this file except in
119e86db79SHyon Kim  *	compliance with the License. You may obtain a copy of the License at
129e86db79SHyon Kim  *
139e86db79SHyon Kim  *	/http://www.snia.org/English/Resources/Code/OpenSource.html
149e86db79SHyon Kim  *
159e86db79SHyon Kim  *	Software distributed under the License is distributed on an "AS IS"
169e86db79SHyon Kim  *	basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
179e86db79SHyon Kim  *	the License for the specific language governing rights and limitations
189e86db79SHyon Kim  *	under the License.
199e86db79SHyon Kim  *
209e86db79SHyon Kim  * The Original Code for  SM-HBA API general header file
219e86db79SHyon Kim  *
229e86db79SHyon Kim  * The Initial Developer of the Original Code is:
239e86db79SHyon Kim  *	Benjamin F. Kuo, Troika Networks, Inc. (benk@troikanetworks.com)
249e86db79SHyon Kim  *
259e86db79SHyon Kim  * Contributor(s):
269e86db79SHyon Kim  *	Tuan Lam, QLogic Corp. (t_lam@qlc.com)
279e86db79SHyon Kim  *	Dan Willie, Emulex Corp. (Dan.Willie@emulex.com)
289e86db79SHyon Kim  *	Dixon Hutchinson, Legato Systems, Inc. (dhutchin@legato.com)
299e86db79SHyon Kim  *	David Dillard, VERITAS Software Corp. (david.dillard@veritas.com)
309e86db79SHyon Kim  *
319e86db79SHyon Kim  * ****************************************************************************
329e86db79SHyon Kim  *
339e86db79SHyon Kim  * Adding on SM-HBA related definitions.
349e86db79SHyon Kim  *
359e86db79SHyon Kim  * - Includes the original HBA API header.
369e86db79SHyon Kim  * - SMHBA_* interfaces and structures are defined.
379e86db79SHyon Kim  *
389e86db79SHyon Kim  * ****************************************************************************
399e86db79SHyon Kim  */
409e86db79SHyon Kim /*
419e86db79SHyon Kim  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
429e86db79SHyon Kim  * Use is subject to license terms.
439e86db79SHyon Kim  */
449e86db79SHyon Kim 
459e86db79SHyon Kim #ifndef _SMHBAAPI_H_
469e86db79SHyon Kim #define	_SMHBAAPI_H_
479e86db79SHyon Kim 
489e86db79SHyon Kim #ifdef __cplusplus
499e86db79SHyon Kim extern "C" {
509e86db79SHyon Kim #endif
519e86db79SHyon Kim 
529e86db79SHyon Kim #include <hbaapi.h>
539e86db79SHyon Kim 
549e86db79SHyon Kim /* Library version string */
559e86db79SHyon Kim #define	SMHBA_LIBVERSION 1
569e86db79SHyon Kim 
579e86db79SHyon Kim /*
589e86db79SHyon Kim  * A SCSI function was requested at a time when issuing the requested command
599e86db79SHyon Kim  * would cause a SCSI overlapped command condition (see SAM-3)
609e86db79SHyon Kim  */
619e86db79SHyon Kim #define	HBA_STATUS_ERROR_TARGET_BUSY	30
629e86db79SHyon Kim /* SM-HBA 6.2	Status Return Values */
639e86db79SHyon Kim /* A call was made to HBA_FreeLibrary when no library was loaded */
649e86db79SHyon Kim #define	HBA_STATUS_ERROR_NOT_LOADED	31
659e86db79SHyon Kim /* A call was made to HBA_LoadLibrary when a library was already loaded */
669e86db79SHyon Kim #define	HBA_STATUS_ERROR_ALREADY_LOADED 32
679e86db79SHyon Kim /*
689e86db79SHyon Kim  * The Address Identifier specified in a call to HBA_SendRNIDV2
699e86db79SHyon Kim  * violates access control rules * for that call.
709e86db79SHyon Kim  */
719e86db79SHyon Kim #define	HBA_STATUS_ERROR_ILLEGAL_FCID	33
729e86db79SHyon Kim #define	HBA_STATUS_ERROR_NOT_ASCSIDEVICE    34
739e86db79SHyon Kim #define	HBA_STATUS_ERROR_INVALID_PROTOCOL_TYPE	35
749e86db79SHyon Kim #define	HBA_STATUS_ERROR_BAD_EVENT_TYPE	36
759e86db79SHyon Kim 
769e86db79SHyon Kim 
779e86db79SHyon Kim /* SM-HBA 6.4.1.1 Port Type */
789e86db79SHyon Kim #define	HBA_PORTTYPE_SASDEVICE   30 /* SAS (SSP or STP) */
799e86db79SHyon Kim #define	HBA_PORTTYPE_SATADEVICE  31 /* SATA Device, i.e. Direct Attach SATA */
809e86db79SHyon Kim #define	HBA_PORTTYPE_SASEXPANDER 32 /* SAS Expander */
819e86db79SHyon Kim 
829e86db79SHyon Kim /* SM-HBA 6.4.1.2 Port State */
839e86db79SHyon Kim #define	HBA_PORTSTATE_DEGRADED	9 /* Degraded, but Operational mode */
849e86db79SHyon Kim 
859e86db79SHyon Kim /* SM-HBA 6.11.1.3 Port Speed */
869e86db79SHyon Kim #define	HBA_PORTSPEED_4GBIT	8  /*  4 GBit / sec */
879e86db79SHyon Kim 
889e86db79SHyon Kim /* SM-HBA 6.1	Basic Attributes Types */
899e86db79SHyon Kim typedef struct SMHBA_scsilun {HBA_UINT8 lun[8]; }
909e86db79SHyon Kim     SMHBA_SCSILUN, *PSMHBA_SCSILUN;
919e86db79SHyon Kim 			/* A byte array representation of a SCSI */
929e86db79SHyon Kim 			/* LUN (see SAM-4). The first byte of the */
939e86db79SHyon Kim 			/* LUN shall be in the first byte of the */
949e86db79SHyon Kim 			/* array, and successive bytes of the SCSI */
959e86db79SHyon Kim 			/* LUN shall be in successive bytes of the */
969e86db79SHyon Kim 			/* array. */
979e86db79SHyon Kim typedef unsigned long HBA_SCSILUN;
989e86db79SHyon Kim 			/* A 64 bit unsigned integer representation */
999e86db79SHyon Kim 			/* of a SCSI LUN (see SAM-4); */
1009e86db79SHyon Kim 			/* may use OS-specific typedef. */
1019e86db79SHyon Kim 			/* Byte zero of a SCSI LUN shall be stored */
1029e86db79SHyon Kim 			/* in the lowest memory address */
1039e86db79SHyon Kim 			/* of the unsigned 64-bit integer value, */
1049e86db79SHyon Kim 			/* and successive bytes of the SCSI LUN */
1059e86db79SHyon Kim 			/* shall be stored in successively higher memory */
1069e86db79SHyon Kim 			/* addresses of the unsigned 64-bit intege value. */
1079e86db79SHyon Kim 			/* Note that computers often do not store */
1089e86db79SHyon Kim 			/* a byte array in memory in the same order */
1099e86db79SHyon Kim 			/* as they store an integer. */
1109e86db79SHyon Kim 			/* This standard requires storage as a byte array */
1119e86db79SHyon Kim 
1129e86db79SHyon Kim 
1139e86db79SHyon Kim /* SM-HBA 6.3.1 Generic Adapter Attribute */
1149e86db79SHyon Kim typedef struct SMHBA_AdapterAttributes {
1159e86db79SHyon Kim 	char			Manufacturer[64];
1169e86db79SHyon Kim 	char			SerialNumber[64];
1179e86db79SHyon Kim 	char			Model[256];
1189e86db79SHyon Kim 	char			ModelDescription[256];
1199e86db79SHyon Kim 	char			HardwareVersion[256];
1209e86db79SHyon Kim 	char			DriverVersion[256];
1219e86db79SHyon Kim 	char			OptionROMVersion[256];
1229e86db79SHyon Kim 	char			FirmwareVersion[256];
1239e86db79SHyon Kim 	HBA_UINT32		VendorSpecificID;
1249e86db79SHyon Kim 	char			DriverName[256];
1259e86db79SHyon Kim 	char			HBASymbolicName[256];
1269e86db79SHyon Kim 	char			RedundantOptionROMVersion[256];
1279e86db79SHyon Kim 	char			RedundantFirmwareVersion[256];
1289e86db79SHyon Kim } SMHBA_ADAPTERATTRIBUTES, *PSMHBA_ADAPTERATTRIBUTES;
1299e86db79SHyon Kim 
1309e86db79SHyon Kim /* SM-HBA 6.4.6 SMHBA FC Port Attributes */
1319e86db79SHyon Kim typedef struct SMHBA_FC_Port {
1329e86db79SHyon Kim 	HBA_WWN			NodeWWN;
1339e86db79SHyon Kim 	HBA_WWN			PortWWN;
1349e86db79SHyon Kim 	HBA_UINT32		FcId;
1359e86db79SHyon Kim 	HBA_COS			PortSupportedClassofService;
1369e86db79SHyon Kim 	HBA_FC4TYPES		PortSupportedFc4Types;
1379e86db79SHyon Kim 	HBA_FC4TYPES		PortActiveFc4Types;
1389e86db79SHyon Kim 	HBA_WWN			FabricName;
1399e86db79SHyon Kim 	char			PortSymbolicName[256];
1409e86db79SHyon Kim 	HBA_UINT32		NumberofDiscoveredPorts;
1419e86db79SHyon Kim 	HBA_UINT8		NumberofPhys;
1429e86db79SHyon Kim }SMHBA_FC_PORT, *PSMHBA_FC_PORT;
1439e86db79SHyon Kim 
1449e86db79SHyon Kim /* SM-HBA 6.4.7.1 HBA_SASPortProtocol */
1459e86db79SHyon Kim typedef HBA_UINT32	HBA_SASPORTPROTOCOL;
1469e86db79SHyon Kim #define	HBA_SASPORTPROTOCOL_SSP	    1 /* Serial SCSI Protocol Port */
1479e86db79SHyon Kim #define	HBA_SASPORTPROTOCOL_STP	    2 /* Serial ATA Tunneling Protocol Port */
1489e86db79SHyon Kim #define	HBA_SASPORTPROTOCOL_SMP	    4 /* Serial Management Protocol Port */
1499e86db79SHyon Kim /* SATA Device, Direct Attached or anywhere in the domain. */
1509e86db79SHyon Kim #define	HBA_SASPORTPROTOCOL_SATA    8
1519e86db79SHyon Kim 
1529e86db79SHyon Kim /* SM-HBA 6.4.8 SMHBA SAS Port Attributes */
1539e86db79SHyon Kim typedef struct SMHBA_SAS_Port {
1549e86db79SHyon Kim 	HBA_SASPORTPROTOCOL	PortProtocol;
1559e86db79SHyon Kim 	HBA_WWN			LocalSASAddress;
1569e86db79SHyon Kim 	HBA_WWN			AttachedSASAddress;
1579e86db79SHyon Kim 	HBA_UINT32		NumberofDiscoveredPorts;
1589e86db79SHyon Kim 	HBA_UINT32		NumberofPhys;
1599e86db79SHyon Kim } SMHBA_SAS_PORT, *PSMHBA_SAS_PORT;
1609e86db79SHyon Kim 
1619e86db79SHyon Kim /* SM-HBA 6.4.2 Generic Port Attributes */
1629e86db79SHyon Kim typedef union SMHBA_Port {
1639e86db79SHyon Kim 	SMHBA_FC_PORT		*FCPort;
1649e86db79SHyon Kim 	SMHBA_SAS_PORT		*SASPort;
1659e86db79SHyon Kim } SMHBA_PORT, *PSMHBA_PORT;
1669e86db79SHyon Kim 
1679e86db79SHyon Kim typedef struct SMHBA_PortAttributes {
1689e86db79SHyon Kim 	HBA_PORTTYPE		PortType;
1699e86db79SHyon Kim 	HBA_PORTSTATE		PortState;
1709e86db79SHyon Kim 	char			OSDeviceName[256];
1719e86db79SHyon Kim 	SMHBA_PORT		PortSpecificAttribute;
1729e86db79SHyon Kim } SMHBA_PORTATTRIBUTES, *PSMHBA_PORTATTRIBUTES;
1739e86db79SHyon Kim 
1749e86db79SHyon Kim /* SM-HBA 6.5.1.1 FC Phy Speed */
1759e86db79SHyon Kim typedef HBA_UINT32 HBA_FCPHYSPEED;
1769e86db79SHyon Kim /* Unknown transceiver incapable of reporting */
1779e86db79SHyon Kim #define	HBA_FCSPEED_UNKNOWN		0
1789e86db79SHyon Kim /*
1799e86db79SHyon Kim  * The following are redundantly defined in SM-HBA 6.11.1.3 Port Speed.
1809e86db79SHyon Kim  * #define  HBA_PORTSPEED_1GBIT            1       1 GBit/sec
1819e86db79SHyon Kim  * #define  HBA_PORTSPEED_2GBIT            2          2 GBit/sec
1829e86db79SHyon Kim  * #define  HBA_PORTSPEED_10GBIT           4          10 GBit/sec
1839e86db79SHyon Kim  * #define  HBA_PORTSPEED_4GBIT            8          4 GBit/sec
1849e86db79SHyon Kim  */
1859e86db79SHyon Kim #define	HBA_FCPHYSPEED_8GBIT		16  /* 8 GBit/sec */
1869e86db79SHyon Kim #define	HBA_FCPHYSPEED_16GBIT		32  /* 16 GBit/sec */
1879e86db79SHyon Kim /*
1889e86db79SHyon Kim  * The following conflicts with HBA API
1899e86db79SHyon Kim  * #define  HBA_PORTSPEED_NOT_NEGOTIATED   (1<<15)  Speed not established
1909e86db79SHyon Kim  */
1919e86db79SHyon Kim 
1929e86db79SHyon Kim /* SM-HBA 6.6.1.2 SM-HBA FC Phy Type */
1939e86db79SHyon Kim typedef HBA_UINT8 HBA_FCPHYTYPE;
1949e86db79SHyon Kim #define	HBA_FCPHYTYPE_UNKNOWN		    1 /* Unknown Phy type */
1959e86db79SHyon Kim #define	HBA_FCPHYTYPE_OPTICAL		    2 /* Optical Phy */
1969e86db79SHyon Kim #define	HBA_FCPHYTYPE_COPPER		    4 /* Copper Phy */
1979e86db79SHyon Kim 
1989e86db79SHyon Kim /* SM-HBA 6.5.2 SM-HBA FC Phy Attributes */
1999e86db79SHyon Kim typedef struct SMHBA_FC_Phy {
2009e86db79SHyon Kim 	HBA_FCPHYSPEED	    PhySupportedSpeed;	/* PhySupportedSpeed */
2019e86db79SHyon Kim 	HBA_FCPHYSPEED	    PhySpeed;		/* PhySpeed */
2029e86db79SHyon Kim 	HBA_FCPHYTYPE	    PhyType;
2039e86db79SHyon Kim 	HBA_UINT32	    MaxFrameSize;	/* MaxFrameSize */
2049e86db79SHyon Kim } SMHBA_FC_PHY, *PSMHBA_FC_PHY;
2059e86db79SHyon Kim 
2069e86db79SHyon Kim /* SM-HBA 6.5.4 SAS PHY Attribute Data Declaration */
2079e86db79SHyon Kim typedef HBA_UINT32 HBA_SASPHYSPEED;
2089e86db79SHyon Kim 
2099e86db79SHyon Kim #define	HBA_SASSTATE_UNKNOWN	0x00 /* Phy is enabled. Speed is unknown */
2109e86db79SHyon Kim #define	HBA_SASSTATE_DISABLED	0x01 /* Phy is disabled. */
2119e86db79SHyon Kim /* Phy is enabled. But failed speed negotiation. */
2129e86db79SHyon Kim #define	HBA_SASSTATE_FAILED	0x02
2139e86db79SHyon Kim /*
2149e86db79SHyon Kim  * Phy is enabled. Detected a SATA device and entered the SATA Spinup hold
2159e86db79SHyon Kim  * state.
2169e86db79SHyon Kim  */
2179e86db79SHyon Kim #define	HBA_SASSTATE_SATASPINUP    0x03
2189e86db79SHyon Kim /* The phy is attached to a Port Selector (see SATA-2.6). */
2199e86db79SHyon Kim #define	HBA_SASSTATE_SATAPORTSEL    0x04
2209e86db79SHyon Kim #define	HBA_SASSPEED_1_5GBIT	    0x08 /*  1.5 GBit/sec */
2219e86db79SHyon Kim #define	HBA_SASSPEED_3GBIT	    0x09 /*  3 GBit/sec */
2229e86db79SHyon Kim #define	HBA_SASSPEED_6GBIT	    0x0a /*  6 GBit/sec */
223*62877672SHans Rosenfeld #define	HBA_SASSPEED_12GBIT	    0x0b /* 12 GBit/sec */
2249e86db79SHyon Kim 
2259e86db79SHyon Kim /* SM-HBA  6.5.5 SAS Phy Attribute */
2269e86db79SHyon Kim typedef struct SMHBA_SAS_Phy {
2279e86db79SHyon Kim 	HBA_UINT8	    PhyIdentifier;
2289e86db79SHyon Kim 	HBA_SASPHYSPEED	    NegotiatedLinkRate;
2299e86db79SHyon Kim 	HBA_SASPHYSPEED	    ProgrammedMinLinkRate;
2309e86db79SHyon Kim 	HBA_SASPHYSPEED	    HardwareMinLinkRate;
2319e86db79SHyon Kim 	HBA_SASPHYSPEED	    ProgrammedMaxLinkRate;
2329e86db79SHyon Kim 	HBA_SASPHYSPEED	    HardwareMaxLinkRate;
2339e86db79SHyon Kim 	HBA_WWN		    domainPortWWN;
2349e86db79SHyon Kim } SMHBA_SAS_PHY, *PSMHBA_SAS_PHY;
2359e86db79SHyon Kim 
2369e86db79SHyon Kim /* SM-HBA 6.6.1.1 Protocol Statistics Data Declarations */
2379e86db79SHyon Kim /* Statistical counters for FC-4, SSP, STP, SMP protocols */
2389e86db79SHyon Kim typedef struct SMHBA_ProtocolStatistics {
2399e86db79SHyon Kim 	HBA_INT64	    SecondsSinceLastReset;
2409e86db79SHyon Kim 	HBA_INT64	    InputRequests;
2419e86db79SHyon Kim 	HBA_INT64	    OutputRequests;
2429e86db79SHyon Kim 	HBA_INT64	    ControlRequests;
2439e86db79SHyon Kim 	HBA_INT64	    InputMegabytes;
2449e86db79SHyon Kim 	HBA_INT64	    OutputMegabytes;
2459e86db79SHyon Kim } SMHBA_PROTOCOLSTATISTICS, *PSMHBA_PROTOCOLSTATISTICS;
2469e86db79SHyon Kim 
2479e86db79SHyon Kim /* SM-HBA 6.6.2.1 Port Statistics Data Declarations */
2489e86db79SHyon Kim typedef struct SMHBA_PortStatistics {
2499e86db79SHyon Kim 	HBA_INT64	    SecondsSinceLastReset;
2509e86db79SHyon Kim 	HBA_INT64	    TxFrames;
2519e86db79SHyon Kim 	HBA_INT64	    TxWords;
2529e86db79SHyon Kim 	HBA_INT64	    RxFrames;
2539e86db79SHyon Kim 	HBA_INT64	    RxWords;
2549e86db79SHyon Kim }SMHBA_PORTSTATISTICS, *PSMHBA_PORTSTATISTICS;
2559e86db79SHyon Kim 
2569e86db79SHyon Kim /* SM-HBA 6.6.2.2 SAS Phy Statistics Data Declaration */
2579e86db79SHyon Kim typedef struct SMHBA_SASPhyStatistics {
2589e86db79SHyon Kim 	HBA_INT64	    SecondsSinceLastReset;
2599e86db79SHyon Kim 	HBA_INT64	    TxFrames;
2609e86db79SHyon Kim 	HBA_INT64	    TxWords;
2619e86db79SHyon Kim 	HBA_INT64	    RxFrames;
2629e86db79SHyon Kim 	HBA_INT64	    RxWords;
2639e86db79SHyon Kim 	HBA_INT64	    InvalidDwordCount;
2649e86db79SHyon Kim 	HBA_INT64	    RunningDisparityErrorCount;
2659e86db79SHyon Kim 	HBA_INT64	    LossofDwordSyncCount;
2669e86db79SHyon Kim 	HBA_INT64	    PhyResetProblemCount;
2679e86db79SHyon Kim } SMHBA_SASPHYSTATISTICS, *PSMHBA_SASPHYSTATISTICS;
2689e86db79SHyon Kim 
2699e86db79SHyon Kim /* SM-HBA 6.6.2.4 FC Phy Statistics Data Declaration */
2709e86db79SHyon Kim /* Statistical counters for FC-0, FC-1, and FC-2 */
2719e86db79SHyon Kim typedef struct SMHBA_FCPhyStatistics {
2729e86db79SHyon Kim 	HBA_INT64	    SecondsSinceLastReset;
2739e86db79SHyon Kim 	HBA_INT64	    TxFrames;
2749e86db79SHyon Kim 	HBA_INT64	    TxWords;
2759e86db79SHyon Kim 	HBA_INT64	    RxFrames;
2769e86db79SHyon Kim 	HBA_INT64	    RxWords;
2779e86db79SHyon Kim 	HBA_INT64	    LIPCount;
2789e86db79SHyon Kim 	HBA_INT64	    NOSCount;
2799e86db79SHyon Kim 	HBA_INT64	    ErrorFrames;
2809e86db79SHyon Kim 	HBA_INT64	    DumpedFrames;
2819e86db79SHyon Kim 	HBA_INT64	    LinkFailureCount;
2829e86db79SHyon Kim 	HBA_INT64	    LossOfSyncCount;
2839e86db79SHyon Kim 	HBA_INT64	    LossOfSignalCount;
2849e86db79SHyon Kim 	HBA_INT64	    PrimitiveSeqProtocolErrCount;
2859e86db79SHyon Kim 	HBA_INT64	    InvalidTxWordCount;
2869e86db79SHyon Kim 	HBA_INT64	    InvalidCRCCount;
2879e86db79SHyon Kim }SMHBA_FCPHYSTATISTICS, *PSMHBA_FCPHYSTATISTICS;
2889e86db79SHyon Kim 
2899e86db79SHyon Kim /* SM-HBA 6.6.2.1 Phy Statistics Data Declaration */
2909e86db79SHyon Kim typedef union SMHBA_PhyStatistics {
2919e86db79SHyon Kim 	SMHBA_SASPHYSTATISTICS	*SASPhyStatistics;
2929e86db79SHyon Kim 	SMHBA_FCPHYSTATISTICS	*FCPhyStatistics;
2939e86db79SHyon Kim } SMHBA_PHYSTATISTICS, *PSMHBA_PHYSTATISTICS;
2949e86db79SHyon Kim 
2959e86db79SHyon Kim /* SM-HBA 6.7.1.1 SMHBA_BIND_CAPABILITY */
2969e86db79SHyon Kim typedef HBA_UINT32 SMHBA_BIND_CAPABILITY;
2979e86db79SHyon Kim #define	SMHBA_CAN_BIND_TO_WWPN 0x0001
2989e86db79SHyon Kim #define	SMHBA_CAN_BIND_TO_LUID 0x0002
2999e86db79SHyon Kim #define	SMHBA_CAN_BIND_ANY_LUNS 0x0400
3009e86db79SHyon Kim #define	SMHBA_CAN_BIND_AUTOMAP 0x0800
3019e86db79SHyon Kim 
3029e86db79SHyon Kim /* SM-HBA 6.7.1.2 SMHBA_BIND_TYPE */
3039e86db79SHyon Kim typedef HBA_UINT32 SMHBA_BIND_TYPE;
3049e86db79SHyon Kim #define	SMHBA_BIND_TO_WWPN 0x0001
3059e86db79SHyon Kim #define	SMHBA_BIND_TO_LUID 0x0002
3069e86db79SHyon Kim 
3079e86db79SHyon Kim /* SM-HBA 6.7.1.3 SMHBA_ScsiId */
3089e86db79SHyon Kim typedef struct SMHBA_ScsiId {
3099e86db79SHyon Kim 	char	    OSDeviceName[256];
3109e86db79SHyon Kim 	HBA_UINT32  ScsiBusNumber;
3119e86db79SHyon Kim 	HBA_UINT32  ScsiTargetNumber;
3129e86db79SHyon Kim 	HBA_UINT32  ScsiOSLun;
3139e86db79SHyon Kim } SMHBA_SCSIID, *PSMHBA_SCSIID;
3149e86db79SHyon Kim 
3159e86db79SHyon Kim /* SM-HBA 6.7.1.4 SMHBA_LUID */
3169e86db79SHyon Kim typedef struct SMHBA_LUID {
3179e86db79SHyon Kim 	char	    buffer[256];
3189e86db79SHyon Kim } SMHBA_LUID, *PSMHBA_LUID;
3199e86db79SHyon Kim 
3209e86db79SHyon Kim /* SM-HBA 6.7.1.5 SMHBA_PORTLUN */
3219e86db79SHyon Kim typedef struct SMHBA_PORTLUN {
3229e86db79SHyon Kim 	HBA_WWN		    PortWWN;
3239e86db79SHyon Kim 	HBA_WWN		    domainPortWWN;
3249e86db79SHyon Kim 	SMHBA_SCSILUN	    TargetLun;
3259e86db79SHyon Kim } SMHBA_PORTLUN, *PSMHBA_PORTLUN;
3269e86db79SHyon Kim 
3279e86db79SHyon Kim /* SM-HBA 6.7.1.6 Composite types */
3289e86db79SHyon Kim typedef struct SMHBA_ScsiEntry {
3299e86db79SHyon Kim 	SMHBA_SCSIID ScsiId;
3309e86db79SHyon Kim 	SMHBA_PORTLUN PortLun;
3319e86db79SHyon Kim 	SMHBA_LUID LUID;
3329e86db79SHyon Kim } SMHBA_SCSIENTRY, *PSMHBA_SCSIENTRY;
3339e86db79SHyon Kim 
3349e86db79SHyon Kim typedef struct SMHBA_TargetMapping {
3359e86db79SHyon Kim 	HBA_UINT32 NumberOfEntries;
3369e86db79SHyon Kim 	SMHBA_SCSIENTRY entry[1]; /* Variable length array */
3379e86db79SHyon Kim } SMHBA_TARGETMAPPING, *PSMHBA_TARGETMAPPING;
3389e86db79SHyon Kim 
3399e86db79SHyon Kim typedef struct SMHBA_BindingEntry {
3409e86db79SHyon Kim 	SMHBA_BIND_TYPE	type;
3419e86db79SHyon Kim 	SMHBA_SCSIID	ScsiId;
3429e86db79SHyon Kim 	SMHBA_PORTLUN	PortLun;
3439e86db79SHyon Kim 	SMHBA_LUID	LUID;
3449e86db79SHyon Kim 	HBA_STATUS	Status;
3459e86db79SHyon Kim } SMHBA_BINDINGENTRY, *PSMHBA_BINDINGENTRY;
3469e86db79SHyon Kim 
3479e86db79SHyon Kim typedef struct SMHBA_Binding {
3489e86db79SHyon Kim 	HBA_UINT32	    NumberOfEntries;
3499e86db79SHyon Kim 	SMHBA_BINDINGENTRY  entry[1]; /* Variable length array */
3509e86db79SHyon Kim } SMHBA_BINDING, *PSMHBA_BINDING;
3519e86db79SHyon Kim 
3529e86db79SHyon Kim /* SM-HBA 6.9.5 Library Attribute Data Declarations */
3539e86db79SHyon Kim typedef struct SMHBA_LibraryAttributes {
3549e86db79SHyon Kim 	char	    LibPath[256];
3559e86db79SHyon Kim 	char	    VName[256];
3569e86db79SHyon Kim 	char	    VVersion[256];
3579e86db79SHyon Kim 	struct {
3589e86db79SHyon Kim 		int	tm_mday;    /* day of the month - [1 - 31] */
3599e86db79SHyon Kim 		int	tm_mon;	    /* months since January - [0 - 11] */
3609e86db79SHyon Kim 		int	tm_year;    /* years since 1900 */
3619e86db79SHyon Kim 	} build_date;
3629e86db79SHyon Kim } SMHBA_LIBRARYATTRIBUTES, *PSMHBA_LIBRARYATTRIBUTES;
3639e86db79SHyon Kim 
3649e86db79SHyon Kim /* SM-HBA 6.8.1 Asynchronous Event Data Declarations */
3659e86db79SHyon Kim #define	HBA_EVENT_PORT_BROADCAST_CHANGE 0x205
3669e86db79SHyon Kim #define	HBA_EVENT_PORT_BROADCAST_SES	0x208
3679e86db79SHyon Kim #define	HBA_EVENT_PORT_BROADCAST_D24_0  0x206
3689e86db79SHyon Kim #define	HBA_EVENT_PORT_BROADCAST_D27_4  0x207
3699e86db79SHyon Kim #define	HBA_EVENT_PORT_BROADCAST_D01_4  0x209
3709e86db79SHyon Kim #define	HBA_EVENT_PORT_BROADCAST_D04_7  0x20A
3719e86db79SHyon Kim #define	HBA_EVENT_PORT_BROADCAST_D16_7  0x20B
3729e86db79SHyon Kim #define	HBA_EVENT_PORT_BROADCAST_D29_7  0x20C
3739e86db79SHyon Kim #define	HBA_EVENT_PORT_ALL		0x2FF
3749e86db79SHyon Kim 
3759e86db79SHyon Kim /* SM-HBA specific entry points. */
3769e86db79SHyon Kim 
3779e86db79SHyon Kim HBA_UINT32 SMHBA_GetVersion();
3789e86db79SHyon Kim 
3799e86db79SHyon Kim HBA_UINT32 SMHBA_GetWrapperLibraryAttributes(
3809e86db79SHyon Kim 	SMHBA_LIBRARYATTRIBUTES *attributes
3819e86db79SHyon Kim );
3829e86db79SHyon Kim 
3839e86db79SHyon Kim HBA_UINT32 SMHBA_GetVendorLibraryAttributes(
3849e86db79SHyon Kim 	HBA_UINT32		adapter_index,
3859e86db79SHyon Kim 	SMHBA_LIBRARYATTRIBUTES *attributes
3869e86db79SHyon Kim );
3879e86db79SHyon Kim 
3889e86db79SHyon Kim HBA_STATUS SMHBA_GetAdapterAttributes(
3899e86db79SHyon Kim 	HBA_HANDLE handle,
3909e86db79SHyon Kim 	SMHBA_ADAPTERATTRIBUTES *pAdapterAttributes
3919e86db79SHyon Kim );
3929e86db79SHyon Kim 
3939e86db79SHyon Kim HBA_STATUS SMHBA_GetNumberOfPorts(
3949e86db79SHyon Kim 	HBA_HANDLE handle,
3959e86db79SHyon Kim 	HBA_UINT32 *numberofports
3969e86db79SHyon Kim );
3979e86db79SHyon Kim 
3989e86db79SHyon Kim HBA_STATUS SMHBA_GetPortType(
3999e86db79SHyon Kim 	HBA_HANDLE handle,
4009e86db79SHyon Kim 	HBA_UINT32 portindex,
4019e86db79SHyon Kim 	HBA_PORTTYPE *porttype
4029e86db79SHyon Kim );
4039e86db79SHyon Kim 
4049e86db79SHyon Kim HBA_STATUS SMHBA_GetAdapterPortAttributes(
4059e86db79SHyon Kim 	HBA_HANDLE handle,
4069e86db79SHyon Kim 	HBA_UINT32 portindex,
4079e86db79SHyon Kim 	SMHBA_PORTATTRIBUTES *portattributes
4089e86db79SHyon Kim );
4099e86db79SHyon Kim 
4109e86db79SHyon Kim HBA_STATUS SMHBA_GetDiscoveredPortAttributes(
4119e86db79SHyon Kim 	HBA_HANDLE handle,
4129e86db79SHyon Kim 	HBA_UINT32 portindex,
4139e86db79SHyon Kim 	HBA_UINT32 discoveredportindex,
4149e86db79SHyon Kim 	SMHBA_PORTATTRIBUTES *porattributes
4159e86db79SHyon Kim );
4169e86db79SHyon Kim 
4179e86db79SHyon Kim HBA_STATUS SMHBA_GetPortAttributesByWWN(
4189e86db79SHyon Kim 	HBA_HANDLE handle,
4199e86db79SHyon Kim 	HBA_WWN portWWN,
4209e86db79SHyon Kim 	HBA_WWN domainPortWWN,
4219e86db79SHyon Kim 	SMHBA_PORTATTRIBUTES *portattributes
4229e86db79SHyon Kim );
4239e86db79SHyon Kim 
4249e86db79SHyon Kim HBA_STATUS SMHBA_GetPortAttributesByWWN(
4259e86db79SHyon Kim 	HBA_HANDLE handle,
4269e86db79SHyon Kim 	HBA_WWN portWWN,
4279e86db79SHyon Kim 	HBA_WWN domainPortWWN,
4289e86db79SHyon Kim 	SMHBA_PORTATTRIBUTES *portattributes
4299e86db79SHyon Kim );
4309e86db79SHyon Kim 
4319e86db79SHyon Kim HBA_STATUS SMHBA_GetFCPhyAttributes(
4329e86db79SHyon Kim 	HBA_HANDLE handle,
4339e86db79SHyon Kim 	HBA_UINT32 portindex,
4349e86db79SHyon Kim 	HBA_UINT32 phyindex,
4359e86db79SHyon Kim 	SMHBA_FC_PHY *phytype
4369e86db79SHyon Kim );
4379e86db79SHyon Kim 
4389e86db79SHyon Kim HBA_STATUS SMHBA_GetSASPhyAttributes(
4399e86db79SHyon Kim 	HBA_HANDLE handle,
4409e86db79SHyon Kim 	HBA_UINT32 portindex,
4419e86db79SHyon Kim 	HBA_UINT32 phyindex,
4429e86db79SHyon Kim 	SMHBA_SAS_PHY *phytype
4439e86db79SHyon Kim );
4449e86db79SHyon Kim 
4459e86db79SHyon Kim HBA_STATUS SMHBA_GetProtocolStatistics(
4469e86db79SHyon Kim 	HBA_HANDLE handle,
4479e86db79SHyon Kim 	HBA_UINT32 portindex,
4489e86db79SHyon Kim 	HBA_UINT32 protocoltype,
4499e86db79SHyon Kim 	SMHBA_PROTOCOLSTATISTICS *pProtocolStatistics
4509e86db79SHyon Kim );
4519e86db79SHyon Kim 
4529e86db79SHyon Kim HBA_STATUS SMHBA_GetPhyStatistics(
4539e86db79SHyon Kim 	HBA_HANDLE handle,
4549e86db79SHyon Kim 	HBA_UINT32 portindex,
4559e86db79SHyon Kim 	HBA_UINT32 phyindex,
4569e86db79SHyon Kim 	SMHBA_PHYSTATISTICS *pPhyStatistics
4579e86db79SHyon Kim );
4589e86db79SHyon Kim 
4599e86db79SHyon Kim HBA_STATUS SMHBA_SendTEST(
4609e86db79SHyon Kim 	HBA_HANDLE handle,
4619e86db79SHyon Kim 	HBA_WWN hbaPortWWN,
4629e86db79SHyon Kim 	HBA_WWN destWWN,
4639e86db79SHyon Kim 	HBA_UINT32 destFCID,
4649e86db79SHyon Kim 	void *pReqBuffer,
4659e86db79SHyon Kim 	HBA_UINT32 ReqBufferSize
4669e86db79SHyon Kim );
4679e86db79SHyon Kim 
4689e86db79SHyon Kim HBA_STATUS SMHBA_SendECHO(
4699e86db79SHyon Kim 	HBA_HANDLE handle,
4709e86db79SHyon Kim 	HBA_WWN hbaPortWWN,
4719e86db79SHyon Kim 	HBA_WWN destWWN,
4729e86db79SHyon Kim 	HBA_UINT32 destFCID,
4739e86db79SHyon Kim 	void *pReqBuffer,
4749e86db79SHyon Kim 	HBA_UINT32 ReqBufferSize,
4759e86db79SHyon Kim 	void *pRspBuffer,
4769e86db79SHyon Kim 	HBA_UINT32 *pRspBufferSize
4779e86db79SHyon Kim );
4789e86db79SHyon Kim 
4799e86db79SHyon Kim HBA_UINT32 SMHBA_SendSMPPassThru(
4809e86db79SHyon Kim 	HBA_HANDLE handle,
4819e86db79SHyon Kim 	HBA_WWN hbaportWWN,
4829e86db79SHyon Kim 	HBA_WWN destportWWN,
4839e86db79SHyon Kim 	HBA_WWN domainPortWWN,
4849e86db79SHyon Kim 	void *pReqBuffer,
4859e86db79SHyon Kim 	HBA_UINT32 ReqBufferSize,
4869e86db79SHyon Kim 	void *pRspBuffer,
4879e86db79SHyon Kim 	HBA_UINT32 *pRspBufferSize
4889e86db79SHyon Kim );
4899e86db79SHyon Kim 
4909e86db79SHyon Kim HBA_STATUS SMHBA_GetBindingCapability(
4919e86db79SHyon Kim 	HBA_HANDLE handle,
4929e86db79SHyon Kim 	HBA_WWN hbaPortWWN,
4939e86db79SHyon Kim 	HBA_WWN domainPortWWN,
4949e86db79SHyon Kim 	SMHBA_BIND_CAPABILITY *pFlags
4959e86db79SHyon Kim );
4969e86db79SHyon Kim 
4979e86db79SHyon Kim HBA_STATUS SMHBA_GetBindingSupport(
4989e86db79SHyon Kim 	HBA_HANDLE handle,
4999e86db79SHyon Kim 	HBA_WWN hbaPortWWN,
5009e86db79SHyon Kim 	HBA_WWN domainPortWWN,
5019e86db79SHyon Kim 	SMHBA_BIND_CAPABILITY *pFlags
5029e86db79SHyon Kim );
5039e86db79SHyon Kim 
5049e86db79SHyon Kim HBA_STATUS SMHBA_SetBindingSupport(
5059e86db79SHyon Kim 	HBA_HANDLE handle,
5069e86db79SHyon Kim 	HBA_WWN hbaPortWWN,
5079e86db79SHyon Kim 	HBA_WWN domainPortWWN,
5089e86db79SHyon Kim 	SMHBA_BIND_CAPABILITY flags
5099e86db79SHyon Kim );
5109e86db79SHyon Kim 
5119e86db79SHyon Kim HBA_STATUS SMHBA_GetTargetMapping(
5129e86db79SHyon Kim 	HBA_HANDLE handle,
5139e86db79SHyon Kim 	HBA_WWN hbaPortWWN,
5149e86db79SHyon Kim 	HBA_WWN domainPortWWN,
5159e86db79SHyon Kim 	SMHBA_TARGETMAPPING *pMapping
5169e86db79SHyon Kim );
5179e86db79SHyon Kim 
5189e86db79SHyon Kim HBA_STATUS SMHBA_GetPersistentBinding(
5199e86db79SHyon Kim 	HBA_HANDLE handle,
5209e86db79SHyon Kim 	HBA_WWN hbaPortWWN,
5219e86db79SHyon Kim 	HBA_WWN domainPortWWN,
5229e86db79SHyon Kim 	SMHBA_BINDING *binding
5239e86db79SHyon Kim );
5249e86db79SHyon Kim 
5259e86db79SHyon Kim HBA_STATUS SMHBA_SetPersistentBinding(
5269e86db79SHyon Kim 	HBA_HANDLE handle,
5279e86db79SHyon Kim 	HBA_WWN hbaPortWWN,
5289e86db79SHyon Kim 	HBA_WWN domainPortWWN,
5299e86db79SHyon Kim 	const SMHBA_BINDING *binding
5309e86db79SHyon Kim );
5319e86db79SHyon Kim 
5329e86db79SHyon Kim HBA_STATUS SMHBA_RemovePersistentBinding(
5339e86db79SHyon Kim 	HBA_HANDLE handle,
5349e86db79SHyon Kim 	HBA_WWN hbaPortWWN,
5359e86db79SHyon Kim 	HBA_WWN domainPortWWN,
5369e86db79SHyon Kim 	const SMHBA_BINDING *binding
5379e86db79SHyon Kim );
5389e86db79SHyon Kim 
5399e86db79SHyon Kim HBA_STATUS SMHBA_RemoveAllPersistentBindings(
5409e86db79SHyon Kim 	HBA_HANDLE handle,
5419e86db79SHyon Kim 	HBA_WWN hbaPortWWN,
5429e86db79SHyon Kim 	HBA_WWN domainPortWWN
5439e86db79SHyon Kim );
5449e86db79SHyon Kim 
5459e86db79SHyon Kim HBA_STATUS SMHBA_GetLUNStatistics(
5469e86db79SHyon Kim 	HBA_HANDLE handle,
5479e86db79SHyon Kim 	const HBA_SCSIID *lunit,
5489e86db79SHyon Kim 	SMHBA_PROTOCOLSTATISTICS *statistics
5499e86db79SHyon Kim );
5509e86db79SHyon Kim 
5519e86db79SHyon Kim HBA_STATUS SMHBA_ScsiInquiry(
5529e86db79SHyon Kim 	HBA_HANDLE handle,
5539e86db79SHyon Kim 	HBA_WWN hbaPortWWN,
5549e86db79SHyon Kim 	HBA_WWN discoveredPortWWN,
5559e86db79SHyon Kim 	HBA_WWN domainPortWWN,
5569e86db79SHyon Kim 	SMHBA_SCSILUN smhbaLUN,
5579e86db79SHyon Kim 	HBA_UINT8 CDB_Byte1,
5589e86db79SHyon Kim 	HBA_UINT8 CDB_Byte2,
5599e86db79SHyon Kim 	void *pRspBuffer,
5609e86db79SHyon Kim 	HBA_UINT32 *pRspBufferSize,
5619e86db79SHyon Kim 	HBA_UINT8 *pScsiStatus,
5629e86db79SHyon Kim 	void *pSenseBuffer,
5639e86db79SHyon Kim 	HBA_UINT32 *pSenseBufferSize
5649e86db79SHyon Kim );
5659e86db79SHyon Kim 
5669e86db79SHyon Kim HBA_STATUS SMHBA_ScsiReportLUNs(
5679e86db79SHyon Kim 	HBA_HANDLE handle,
5689e86db79SHyon Kim 	HBA_WWN hbaPortWWN,
5699e86db79SHyon Kim 	HBA_WWN discoveredPortWWN,
5709e86db79SHyon Kim 	HBA_WWN domainPortWWN,
5719e86db79SHyon Kim 	void *pRspBuffer,
5729e86db79SHyon Kim 	HBA_UINT32 *pRspBufferSize,
5739e86db79SHyon Kim 	HBA_UINT8 *pScsiStatus,
5749e86db79SHyon Kim 	void *pSenseBuffer,
5759e86db79SHyon Kim 	HBA_UINT32 *pSenseBufferSize
5769e86db79SHyon Kim );
5779e86db79SHyon Kim 
5789e86db79SHyon Kim HBA_STATUS SMHBA_ScsiReadCapacity(
5799e86db79SHyon Kim 	HBA_HANDLE handle,
5809e86db79SHyon Kim 	HBA_WWN hbaPortWWN,
5819e86db79SHyon Kim 	HBA_WWN discoveredPortWWN,
5829e86db79SHyon Kim 	HBA_WWN domainPortWWN,
5839e86db79SHyon Kim 	SMHBA_SCSILUN smhbaLUN,
5849e86db79SHyon Kim 	void *pRspBuffer,
5859e86db79SHyon Kim 	HBA_UINT32 *pRspBufferSize,
5869e86db79SHyon Kim 	HBA_UINT8 *pScsiStatus,
5879e86db79SHyon Kim 	void *pSenseBuffer,
5889e86db79SHyon Kim 	HBA_UINT32 *pSenseBufferSize
5899e86db79SHyon Kim );
5909e86db79SHyon Kim 
5919e86db79SHyon Kim HBA_STATUS SMHBA_RegisterForAdapterAddEvents(
5929e86db79SHyon Kim 	void (*pCallback) (
5939e86db79SHyon Kim 		void *pData,
5949e86db79SHyon Kim 		HBA_WWN portWWN,
5959e86db79SHyon Kim 		HBA_UINT32 eventType),
5969e86db79SHyon Kim 	void *pUserData,
5979e86db79SHyon Kim 	HBA_CALLBACKHANDLE *pCallbackHandle
5989e86db79SHyon Kim );
5999e86db79SHyon Kim 
6009e86db79SHyon Kim HBA_STATUS SMHBA_RegisterForAdapterEvents(
6019e86db79SHyon Kim 	void (*pCallback) (
6029e86db79SHyon Kim 		void *pData,
6039e86db79SHyon Kim 		HBA_WWN portWWN,
6049e86db79SHyon Kim 		HBA_UINT32 eventType),
6059e86db79SHyon Kim 	void *pUserData,
6069e86db79SHyon Kim 	HBA_HANDLE handle,
6079e86db79SHyon Kim 	HBA_CALLBACKHANDLE *pCallbackHandle
6089e86db79SHyon Kim );
6099e86db79SHyon Kim 
6109e86db79SHyon Kim HBA_STATUS SMHBA_RegisterForAdapterPortEvents(
6119e86db79SHyon Kim 	void (*pCallback) (
6129e86db79SHyon Kim 		void *pData,
6139e86db79SHyon Kim 		HBA_WWN portWWN,
6149e86db79SHyon Kim 		HBA_UINT32 eventType,
6159e86db79SHyon Kim 		HBA_UINT32 fabricPortID),
6169e86db79SHyon Kim 	void *pUserData,
6179e86db79SHyon Kim 	HBA_HANDLE handle,
6189e86db79SHyon Kim 	HBA_WWN portWWN,
6199e86db79SHyon Kim 	HBA_UINT32 specificEventType,
6209e86db79SHyon Kim 	HBA_CALLBACKHANDLE *pCallbackHandle
6219e86db79SHyon Kim );
6229e86db79SHyon Kim 
6239e86db79SHyon Kim HBA_STATUS SMHBA_RegisterForAdapterPortStatEvents(
6249e86db79SHyon Kim 	void (*pCallback) (
6259e86db79SHyon Kim 		void *pData,
6269e86db79SHyon Kim 		HBA_WWN portWWN,
6279e86db79SHyon Kim 		HBA_UINT32 protocolType,
6289e86db79SHyon Kim 		HBA_UINT32 eventType),
6299e86db79SHyon Kim 	void *pUserData,
6309e86db79SHyon Kim 	HBA_HANDLE handle,
6319e86db79SHyon Kim 	HBA_WWN portWWN,
6329e86db79SHyon Kim 	HBA_UINT32 protocolType,
6339e86db79SHyon Kim 	SMHBA_PROTOCOLSTATISTICS stats,
6349e86db79SHyon Kim 	HBA_UINT32 statType,
6359e86db79SHyon Kim 	HBA_CALLBACKHANDLE *pCallbackHandle
6369e86db79SHyon Kim );
6379e86db79SHyon Kim 
6389e86db79SHyon Kim HBA_STATUS SMHBA_RegisterForAdapterPhyStatEvents(
6399e86db79SHyon Kim 	void (*pCallback) (
6409e86db79SHyon Kim 		void *pData,
6419e86db79SHyon Kim 		HBA_WWN portWWN,
6429e86db79SHyon Kim 		HBA_UINT32 phyIndex,
6439e86db79SHyon Kim 		HBA_UINT32 eventType),
6449e86db79SHyon Kim 	void *pUserData,
6459e86db79SHyon Kim 	HBA_HANDLE handle,
6469e86db79SHyon Kim 	HBA_WWN portWWN,
6479e86db79SHyon Kim 	HBA_UINT32 phyIndex,
6489e86db79SHyon Kim 	SMHBA_PHYSTATISTICS stats,
6499e86db79SHyon Kim 	HBA_UINT32 statType,
6509e86db79SHyon Kim 	HBA_CALLBACKHANDLE *pCallbackHandle
6519e86db79SHyon Kim );
6529e86db79SHyon Kim 
6539e86db79SHyon Kim HBA_STATUS SMHBA_RegisterForTargetEvents(
6549e86db79SHyon Kim 	void (*pCallback) (
6559e86db79SHyon Kim 		void *pData,
6569e86db79SHyon Kim 		HBA_WWN hbaPortWWN,
6579e86db79SHyon Kim 		HBA_WWN discoveredPortWWN,
6589e86db79SHyon Kim 		HBA_WWN domainPortWWN,
6599e86db79SHyon Kim 		HBA_UINT32 eventType),
6609e86db79SHyon Kim 	void *pUserData,
6619e86db79SHyon Kim 	HBA_HANDLE handle,
6629e86db79SHyon Kim 	HBA_WWN hbaPortWWN,
6639e86db79SHyon Kim 	HBA_WWN discoveredPortWWN,
6649e86db79SHyon Kim 	HBA_WWN domainPortWWN,
6659e86db79SHyon Kim 	HBA_CALLBACKHANDLE *pCallbackHandle,
6669e86db79SHyon Kim 	HBA_UINT32 allTargets
6679e86db79SHyon Kim );
6689e86db79SHyon Kim 
6699e86db79SHyon Kim #ifdef __cplusplus
6709e86db79SHyon Kim }
6719e86db79SHyon Kim #endif
6729e86db79SHyon Kim 
6739e86db79SHyon Kim #endif /* _SMHBAAPI_H_ */
674