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