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