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