xref: /onnv-gate/usr/src/lib/smhba/common/vendorsmhbaapi.h (revision 10652:9d0aff74d6fd)
1*10652SHyon.Kim@Sun.COM /*
2*10652SHyon.Kim@Sun.COM  * ****************************************************************************
3*10652SHyon.Kim@Sun.COM  *
4*10652SHyon.Kim@Sun.COM  * Description
5*10652SHyon.Kim@Sun.COM  *	vendorhbaapi.h - incombination with hbaapi.h, defines interface to
6*10652SHyon.Kim@Sun.COM  *		vendor specific API
7*10652SHyon.Kim@Sun.COM  *
8*10652SHyon.Kim@Sun.COM  * License:
9*10652SHyon.Kim@Sun.COM  *	The contents of this file are subject to the SNIA Public License
10*10652SHyon.Kim@Sun.COM  *	Version 1.0 (the "License"); you may not use this file except in
11*10652SHyon.Kim@Sun.COM  *	compliance with the License. You may obtain a copy of the License at
12*10652SHyon.Kim@Sun.COM  *
13*10652SHyon.Kim@Sun.COM  *	/http://www.snia.org/English/Resources/Code/OpenSource.html
14*10652SHyon.Kim@Sun.COM  *
15*10652SHyon.Kim@Sun.COM  *	Software distributed under the License is distributed on an "AS IS"
16*10652SHyon.Kim@Sun.COM  *	basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
17*10652SHyon.Kim@Sun.COM  *	the License for the specific language governing rights and limitations
18*10652SHyon.Kim@Sun.COM  *	under the License.
19*10652SHyon.Kim@Sun.COM  *
20*10652SHyon.Kim@Sun.COM  * The Original Code is  SNIA HBA API general header file
21*10652SHyon.Kim@Sun.COM  *
22*10652SHyon.Kim@Sun.COM  * The Initial Developer of the Original Code is:
23*10652SHyon.Kim@Sun.COM  *	Benjamin F. Kuo, Troika Networks, Inc. (benk@troikanetworks.com)
24*10652SHyon.Kim@Sun.COM  *
25*10652SHyon.Kim@Sun.COM  * Contributor(s):
26*10652SHyon.Kim@Sun.COM  *	Tuan Lam, QLogic Corp. (t_lam@qlc.com)
27*10652SHyon.Kim@Sun.COM  *	Dan Willie, Emulex Corp. (Dan.Willie@emulex.com)
28*10652SHyon.Kim@Sun.COM  *	Dixon Hutchinson, Legato Systems, Inc. (dhutchin@legato.com)
29*10652SHyon.Kim@Sun.COM  *	David Dillard, VERITAS Software Corp. (david.dillard@veritas.com)
30*10652SHyon.Kim@Sun.COM  *
31*10652SHyon.Kim@Sun.COM  * ****************************************************************************
32*10652SHyon.Kim@Sun.COM  *
33*10652SHyon.Kim@Sun.COM  *   Changes:
34*10652SHyon.Kim@Sun.COM  *	12/12/2001 Original revision, code split out of hbaapi.h
35*10652SHyon.Kim@Sun.COM  *	(for other changes... see the CVS logs)
36*10652SHyon.Kim@Sun.COM  * ****************************************************************************
37*10652SHyon.Kim@Sun.COM  */
38*10652SHyon.Kim@Sun.COM /*
39*10652SHyon.Kim@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
40*10652SHyon.Kim@Sun.COM  * Use is subject to license terms.
41*10652SHyon.Kim@Sun.COM  */
42*10652SHyon.Kim@Sun.COM 
43*10652SHyon.Kim@Sun.COM #ifndef _VENDORSMHBAAPI_H_
44*10652SHyon.Kim@Sun.COM #define	_VENDORSMHBAAPI_H_
45*10652SHyon.Kim@Sun.COM 
46*10652SHyon.Kim@Sun.COM #ifdef __cplusplus
47*10652SHyon.Kim@Sun.COM extern "C" {
48*10652SHyon.Kim@Sun.COM #endif
49*10652SHyon.Kim@Sun.COM 
50*10652SHyon.Kim@Sun.COM #include <vendorhbaapi.h>
51*10652SHyon.Kim@Sun.COM 
52*10652SHyon.Kim@Sun.COM /* SM-HBA-2 6.9.2 Function Prototypes */
53*10652SHyon.Kim@Sun.COM typedef HBA_UINT32 (* SMHBAGetVersionFunc)();
54*10652SHyon.Kim@Sun.COM typedef HBA_UINT32 (* SMHBAGetWrapperLibraryAttributesFunc)
55*10652SHyon.Kim@Sun.COM 	(HBA_UINT32, SMHBA_LIBRARYATTRIBUTES *);
56*10652SHyon.Kim@Sun.COM typedef HBA_UINT32 (* SMHBAGetVendorLibraryAttributesFunc)
57*10652SHyon.Kim@Sun.COM 	(SMHBA_LIBRARYATTRIBUTES *);
58*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBAGetAdapterAttributesFunc)
59*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, SMHBA_ADAPTERATTRIBUTES *);
60*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBAGetNumberOfPortsFunc)
61*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_UINT32 *);
62*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBAGetPortTypeFunc)
63*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_UINT32, HBA_PORTTYPE *);
64*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBAGetAdapterPortAttributesFunc)
65*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_UINT32, SMHBA_PORTATTRIBUTES *);
66*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBAGetDiscoveredPortAttributesFunc)
67*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_PORTATTRIBUTES *);
68*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBAGetPortAttributesByWWNFunc)
69*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_PORTATTRIBUTES *);
70*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBAGetFCPhyAttributesFunc)
71*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_FC_PHY *);
72*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBAGetSASPhyAttributesFunc)
73*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_SAS_PHY *);
74*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBAGetProtocolStatisticsFunc)
75*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_PROTOCOLSTATISTICS *);
76*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBAGetPhyStatisticsFunc)
77*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_PHYSTATISTICS *);
78*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBASendTESTFunc)
79*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, void *, HBA_UINT32);
80*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBASendECHOFunc)
81*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, void *, HBA_UINT32,
82*10652SHyon.Kim@Sun.COM 	void *, HBA_UINT32 *);
83*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBASendSMPPassThruFunc)
84*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN, void *, HBA_UINT32, void *,
85*10652SHyon.Kim@Sun.COM 	HBA_UINT32 *);
86*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBAGetBindingCapabilityFunc)
87*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_BIND_CAPABILITY *);
88*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBAGetBindingSupportFunc)
89*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_BIND_CAPABILITY *);
90*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBASetBindingSupportFunc)
91*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_BIND_CAPABILITY);
92*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBAGetTargetMappingFunc)
93*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_TARGETMAPPING *);
94*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBAGetPersistentBindingFunc)
95*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_BINDING *);
96*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBASetPersistentBindingFunc)
97*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_WWN, HBA_WWN, const SMHBA_BINDING *);
98*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBARemovePersistentBindingFunc)
99*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_WWN, HBA_WWN, const SMHBA_BINDING *);
100*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBARemoveAllPersistentBindingsFunc)
101*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_WWN, HBA_WWN);
102*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBAGetLUNStatisticsFunc)
103*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, const HBA_SCSIID *, SMHBA_PROTOCOLSTATISTICS *);
104*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBARegisterForAdapterAddEventsFunc)
105*10652SHyon.Kim@Sun.COM 	(void (*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_CALLBACKHANDLE *);
106*10652SHyon.Kim@Sun.COM typedef HBA_STATUS (* SMHBARegisterForAdapterEventsFunc)
107*10652SHyon.Kim@Sun.COM 	(void (*)(void *, HBA_WWN, HBA_UINT32),
108*10652SHyon.Kim@Sun.COM 	void *, HBA_HANDLE, HBA_CALLBACKHANDLE *);
109*10652SHyon.Kim@Sun.COM typedef HBA_STATUS    (* SMHBARegisterForAdapterPortEventsFunc)
110*10652SHyon.Kim@Sun.COM 	(void (*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32),
111*10652SHyon.Kim@Sun.COM 	void *, HBA_HANDLE, HBA_WWN, HBA_UINT32, HBA_CALLBACKHANDLE *);
112*10652SHyon.Kim@Sun.COM typedef HBA_STATUS    (* SMHBARegisterForAdapterPortStatEventsFunc)
113*10652SHyon.Kim@Sun.COM 	(void (*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32),
114*10652SHyon.Kim@Sun.COM 	void *, HBA_HANDLE, HBA_WWN, HBA_UINT32, SMHBA_PROTOCOLSTATISTICS,
115*10652SHyon.Kim@Sun.COM 	HBA_UINT32, HBA_CALLBACKHANDLE *);
116*10652SHyon.Kim@Sun.COM typedef HBA_STATUS    (* SMHBARegisterForAdapterPhyStatEventsFunc)
117*10652SHyon.Kim@Sun.COM 	(void (*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32),
118*10652SHyon.Kim@Sun.COM 	void *, HBA_HANDLE, HBA_WWN, HBA_UINT32, SMHBA_PHYSTATISTICS,
119*10652SHyon.Kim@Sun.COM 	HBA_UINT32, HBA_CALLBACKHANDLE *);
120*10652SHyon.Kim@Sun.COM typedef HBA_STATUS    (* SMHBARegisterForTargetEventsFunc)
121*10652SHyon.Kim@Sun.COM 	(void (*)(void *, HBA_WWN, HBA_WWN, HBA_WWN, HBA_UINT32),
122*10652SHyon.Kim@Sun.COM 	void *, HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN,
123*10652SHyon.Kim@Sun.COM 	HBA_CALLBACKHANDLE *, HBA_UINT32);
124*10652SHyon.Kim@Sun.COM typedef HBA_STATUS    (* SMHBAScsiInquiryFunc)
125*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN, SMHBA_SCSILUN, HBA_UINT8,
126*10652SHyon.Kim@Sun.COM 	HBA_UINT8, void *, HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *);
127*10652SHyon.Kim@Sun.COM typedef HBA_STATUS    (* SMHBAScsiReportLUNsFunc)
128*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN, void *, HBA_UINT32 *,
129*10652SHyon.Kim@Sun.COM 	HBA_UINT8 *, void *, HBA_UINT32 *);
130*10652SHyon.Kim@Sun.COM typedef HBA_STATUS    (* SMHBAScsiReadCapacityFunc)
131*10652SHyon.Kim@Sun.COM 	(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN, SMHBA_SCSILUN, void *,
132*10652SHyon.Kim@Sun.COM 	HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *);
133*10652SHyon.Kim@Sun.COM 
134*10652SHyon.Kim@Sun.COM /* SM-HBA-2 6.9.3 Entry Point Data Declarations */
135*10652SHyon.Kim@Sun.COM typedef struct SMHBA_EntryPoints {
136*10652SHyon.Kim@Sun.COM 	SMHBAGetVersionFunc			GetVersionHandler;
137*10652SHyon.Kim@Sun.COM 	HBALoadLibraryFunc			LoadLibraryHandler;
138*10652SHyon.Kim@Sun.COM 	HBAFreeLibraryFunc			FreeLibraryHandler;
139*10652SHyon.Kim@Sun.COM 	HBAGetNumberOfAdaptersFunc		GetNumberOfAdaptersHandler;
140*10652SHyon.Kim@Sun.COM 	HBARefreshInformationFunc		RefreshInformationHandler;
141*10652SHyon.Kim@Sun.COM 	SMHBAGetVendorLibraryAttributesFunc
142*10652SHyon.Kim@Sun.COM 		GetVendorLibraryAttributesHandler;
143*10652SHyon.Kim@Sun.COM 	HBAGetAdapterNameFunc			GetAdapterNameHandler;
144*10652SHyon.Kim@Sun.COM 	HBAOpenAdapterFunc			OpenAdapterHandler;
145*10652SHyon.Kim@Sun.COM 	HBACloseAdapterFunc			CloseAdapterHandler;
146*10652SHyon.Kim@Sun.COM 	SMHBAGetAdapterAttributesFunc		GetAdapterAttributesHandler;
147*10652SHyon.Kim@Sun.COM 	SMHBAGetNumberOfPortsFunc		GetNumberOfPortsHandler;
148*10652SHyon.Kim@Sun.COM 	SMHBAGetPortTypeFunc			GetPortTypeHandler;
149*10652SHyon.Kim@Sun.COM 	SMHBAGetAdapterPortAttributesFunc
150*10652SHyon.Kim@Sun.COM 		GetAdapterPortAttributesHandler;
151*10652SHyon.Kim@Sun.COM 	SMHBAGetDiscoveredPortAttributesFunc
152*10652SHyon.Kim@Sun.COM 		GetDiscoveredPortAttributesHandler;
153*10652SHyon.Kim@Sun.COM 	SMHBAGetPortAttributesByWWNFunc		GetPortAttributesByWWNHandler;
154*10652SHyon.Kim@Sun.COM 	SMHBAGetFCPhyAttributesFunc		GetFCPhyAttributesHandler;
155*10652SHyon.Kim@Sun.COM 	SMHBAGetSASPhyAttributesFunc		GetSASPhyAttributesHandler;
156*10652SHyon.Kim@Sun.COM 	SMHBAGetProtocolStatisticsFunc		GetProtocolStatisticsHandler;
157*10652SHyon.Kim@Sun.COM 	SMHBAGetPhyStatisticsFunc		GetPhyStatisticsHandler;
158*10652SHyon.Kim@Sun.COM 	HBASendCTPassThruV2Func			SendCTPassThruV2Handler;
159*10652SHyon.Kim@Sun.COM 	HBASetRNIDMgmtInfoFunc			SetRNIDMgmtInfoHandler;
160*10652SHyon.Kim@Sun.COM 	HBAGetRNIDMgmtInfoFunc			GetRNIDMgmtInfoHandler;
161*10652SHyon.Kim@Sun.COM 	HBASendRNIDV2Func			SendRNIDV2Handler;
162*10652SHyon.Kim@Sun.COM 	HBASendRPLFunc				SendRPLHandler;
163*10652SHyon.Kim@Sun.COM 	HBASendRPSFunc				SendRPSHandler;
164*10652SHyon.Kim@Sun.COM 	HBASendSRLFunc				SendSRLHandler;
165*10652SHyon.Kim@Sun.COM 	HBASendLIRRFunc				SendLIRRHandler;
166*10652SHyon.Kim@Sun.COM 	HBASendRLSFunc				SendRLSHandler;
167*10652SHyon.Kim@Sun.COM 	SMHBASendTESTFunc			SendTESTHandler;
168*10652SHyon.Kim@Sun.COM 	SMHBASendECHOFunc			SendECHOHandler;
169*10652SHyon.Kim@Sun.COM 	SMHBASendSMPPassThruFunc		SendSMPPassThruHandler;
170*10652SHyon.Kim@Sun.COM 	SMHBAGetBindingCapabilityFunc		GetBindingCapabilityHandler;
171*10652SHyon.Kim@Sun.COM 	SMHBAGetBindingSupportFunc		GetBindingSupportHandler;
172*10652SHyon.Kim@Sun.COM 	SMHBASetBindingSupportFunc		SetBindingSupportHandler;
173*10652SHyon.Kim@Sun.COM 	SMHBAGetTargetMappingFunc		GetTargetMappingHandler;
174*10652SHyon.Kim@Sun.COM 	SMHBAGetPersistentBindingFunc		GetPersistentBindingHandler;
175*10652SHyon.Kim@Sun.COM 	SMHBASetPersistentBindingFunc		SetPersistentBindingHandler;
176*10652SHyon.Kim@Sun.COM 	SMHBARemovePersistentBindingFunc	RemovePersistentBindingHandler;
177*10652SHyon.Kim@Sun.COM 	SMHBARemoveAllPersistentBindingsFunc
178*10652SHyon.Kim@Sun.COM 		RemoveAllPersistentBindingsHandler;
179*10652SHyon.Kim@Sun.COM 	SMHBAGetLUNStatisticsFunc		GetLUNStatisticsHandler;
180*10652SHyon.Kim@Sun.COM 	SMHBAScsiInquiryFunc			ScsiInquiryHandler;
181*10652SHyon.Kim@Sun.COM 	SMHBAScsiReportLUNsFunc			ScsiReportLUNsHandler;
182*10652SHyon.Kim@Sun.COM 	SMHBAScsiReadCapacityFunc		ScsiReadCapacityHandler;
183*10652SHyon.Kim@Sun.COM 	SMHBARegisterForAdapterAddEventsFunc
184*10652SHyon.Kim@Sun.COM 		RegisterForAdapterAddEventsHandler;
185*10652SHyon.Kim@Sun.COM 	SMHBARegisterForAdapterEventsFunc	RegisterForAdapterEventsHandler;
186*10652SHyon.Kim@Sun.COM 	SMHBARegisterForAdapterPortEventsFunc
187*10652SHyon.Kim@Sun.COM 		RegisterForAdapterPortEventsHandler;
188*10652SHyon.Kim@Sun.COM 	SMHBARegisterForAdapterPortStatEventsFunc
189*10652SHyon.Kim@Sun.COM 		RegisterForAdapterPortStatEventsHandler;
190*10652SHyon.Kim@Sun.COM 	SMHBARegisterForAdapterPhyStatEventsFunc
191*10652SHyon.Kim@Sun.COM 		RegisterForAdapterPhyStatEventsHandler;
192*10652SHyon.Kim@Sun.COM 	SMHBARegisterForTargetEventsFunc	RegisterForTargetEventsHandler;
193*10652SHyon.Kim@Sun.COM 	HBARegisterForLinkEventsFunc		RegisterForLinkEventsHandler;
194*10652SHyon.Kim@Sun.COM 	HBARemoveCallbackFunc			RemoveCallbackHandler;
195*10652SHyon.Kim@Sun.COM } SMHBA_ENTRYPOINTS, *PSMHBA_ENTRYPOINTS;
196*10652SHyon.Kim@Sun.COM 
197*10652SHyon.Kim@Sun.COM typedef HBA_UINT32 (* SMHBARegisterLibraryFunc)(SMHBA_ENTRYPOINTS *);
198*10652SHyon.Kim@Sun.COM 
199*10652SHyon.Kim@Sun.COM HBA_STATUS SMHBA_RegisterLibrary(
200*10652SHyon.Kim@Sun.COM 	SMHBA_ENTRYPOINTS	*functionTable
201*10652SHyon.Kim@Sun.COM );
202*10652SHyon.Kim@Sun.COM 
203*10652SHyon.Kim@Sun.COM #ifdef __cplusplus
204*10652SHyon.Kim@Sun.COM }
205*10652SHyon.Kim@Sun.COM #endif
206*10652SHyon.Kim@Sun.COM 
207*10652SHyon.Kim@Sun.COM #endif /* _VENDORSMHBAAPI_H_ */
208