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