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