xref: /titanic_51/usr/src/lib/smhba/common/smhbaapi.h (revision 9e86db79b7d1bbc5f2f04e99954cbd5eae0e22bb)
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