sd: remove 'ssd' driver support
[unleashed/tickless.git] / usr / src / lib / hbaapi / common / vendorhbaapi.h
blobd71fa55c3cc6247c55eeef7219ace0b30a33695e
1 /******************************************************************************
3 * Description
4 * vendorhbaapi.h - incombination with hbaapi.h, defines interface to
5 * vendor specific API
7 * License:
8 * The contents of this file are subject to the SNIA Public License
9 * Version 1.0 (the "License"); you may not use this file except in
10 * compliance with the License. You may obtain a copy of the License at
12 * /http://www.snia.org/English/Resources/Code/OpenSource.html
14 * Software distributed under the License is distributed on an "AS IS"
15 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
16 * the License for the specific language governing rights and limitations
17 * under the License.
19 * The Original Code is SNIA HBA API general header file
21 * The Initial Developer of the Original Code is:
22 * Benjamin F. Kuo, Troika Networks, Inc. (benk@troikanetworks.com)
24 * Contributor(s):
25 * Tuan Lam, QLogic Corp. (t_lam@qlc.com)
26 * Dan Willie, Emulex Corp. (Dan.Willie@emulex.com)
27 * Dixon Hutchinson, Legato Systems, Inc. (dhutchin@legato.com)
28 * David Dillard, VERITAS Software Corp. (david.dillard@veritas.com)
30 *******************************************************************************
32 * Changes:
33 * 12/12/2001 Original revision, code split out of hbaapi.h
34 * (for other changes... see the CVS logs)
35 ******************************************************************************/
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
42 #ifndef VENDOR_HBA_API_H
43 #define VENDOR_HBA_API_H
46 /* 4.2.12 HBA Library Function Table */
47 typedef HBA_UINT32 (* HBAGetVersionFunc)();
48 typedef HBA_STATUS (* HBALoadLibraryFunc)();
49 typedef HBA_STATUS (* HBAFreeLibraryFunc)();
50 typedef HBA_UINT32 (* HBAGetNumberOfAdaptersFunc)();
51 typedef HBA_STATUS (* HBAGetAdapterNameFunc)(HBA_UINT32, char *);
53 * Open Adapter.... the vendor function is limmited to 16 bits,
54 * the wrapper library will mask off the upper 16.
55 * Maybe typedef should be:
56 * typedef HBA_UINT16 (* HBAOpenAdapterFunc)(char *);
58 typedef HBA_HANDLE (* HBAOpenAdapterFunc)(char *);
59 typedef HBA_STATUS (* HBAOpenAdapterByWWNFunc)
60 (HBA_HANDLE *, HBA_WWN);
61 typedef void (* HBACloseAdapterFunc)(HBA_HANDLE);
62 typedef HBA_STATUS (* HBAGetAdapterAttributesFunc)
63 (HBA_HANDLE, HBA_ADAPTERATTRIBUTES *);
64 typedef HBA_STATUS (* HBAGetAdapterPortAttributesFunc)
65 (HBA_HANDLE, HBA_UINT32, HBA_PORTATTRIBUTES *);
66 typedef HBA_STATUS (* HBAGetPortStatisticsFunc)
67 (HBA_HANDLE, HBA_UINT32, HBA_PORTSTATISTICS *);
68 typedef HBA_STATUS (* HBAGetDiscoveredPortAttributesFunc)
69 (HBA_HANDLE, HBA_UINT32, HBA_UINT32, HBA_PORTATTRIBUTES *);
70 typedef HBA_STATUS (* HBAGetPortAttributesByWWNFunc)
71 (HBA_HANDLE, HBA_WWN, HBA_PORTATTRIBUTES *);
72 typedef HBA_STATUS (* HBASendCTPassThruV2Func)
73 (HBA_HANDLE, HBA_WWN, void *, HBA_UINT32, void *, HBA_UINT32 *);
74 typedef void (* HBARefreshInformationFunc)(HBA_HANDLE);
75 typedef void (* HBARefreshAdapterConfigurationFunc) ();
76 typedef void (* HBAResetStatisticsFunc)(HBA_HANDLE, HBA_UINT32);
77 typedef HBA_STATUS (* HBAGetFcpTargetMappingV2Func)
78 (HBA_HANDLE, HBA_WWN, HBA_FCPTARGETMAPPINGV2 *);
79 typedef HBA_STATUS (* HBAGetBindingCapabilityFunc)
80 (HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY *);
81 typedef HBA_STATUS (* HBAGetBindingSupportFunc)
82 (HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY *);
83 typedef HBA_STATUS (* HBASetBindingSupportFunc)
84 (HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY);
85 typedef HBA_STATUS (* HBASetPersistentBindingV2Func)
86 (HBA_HANDLE, HBA_WWN, const HBA_FCPBINDING2 *);
87 typedef HBA_STATUS (* HBAGetPersistentBindingV2Func)
88 (HBA_HANDLE, HBA_WWN, HBA_FCPBINDING2 *);
89 typedef HBA_STATUS (* HBARemovePersistentBindingFunc)
90 (HBA_HANDLE, HBA_WWN, const HBA_FCPBINDING2 *);
91 typedef HBA_STATUS (* HBARemoveAllPersistentBindingsFunc)
92 (HBA_HANDLE, HBA_WWN);
93 typedef HBA_STATUS (* HBAGetEventBufferFunc)
94 (HBA_HANDLE, HBA_EVENTINFO *, HBA_UINT32 *);
95 typedef HBA_STATUS (* HBASetRNIDMgmtInfoFunc)
96 (HBA_HANDLE, HBA_MGMTINFO);
97 typedef HBA_STATUS (* HBAGetRNIDMgmtInfoFunc)
98 (HBA_HANDLE, HBA_MGMTINFO *);
99 typedef HBA_STATUS (* HBASendRNIDV2Func)
100 (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_UINT32, void *, HBA_UINT32*);
101 typedef HBA_STATUS (* HBAScsiInquiryV2Func)
102 (HBA_HANDLE,HBA_WWN,HBA_WWN, HBA_UINT64, HBA_UINT8, HBA_UINT8,
103 void *, HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *);
104 typedef HBA_STATUS (* HBAScsiReportLUNsV2Func)
105 (HBA_HANDLE, HBA_WWN, HBA_WWN, void *, HBA_UINT32 *, HBA_UINT8 *,
106 void *, HBA_UINT32 *);
107 typedef HBA_STATUS (* HBAScsiReadCapacityV2Func)
108 (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT64, void *, HBA_UINT32 *,
109 HBA_UINT8 *, void *, HBA_UINT32 *);
110 typedef HBA_UINT32 (* HBAGetVendorLibraryAttributesFunc)
111 (HBA_LIBRARYATTRIBUTES *);
112 typedef HBA_STATUS (* HBARemoveCallbackFunc) (HBA_CALLBACKHANDLE);
113 typedef HBA_STATUS (* HBARegisterForAdapterAddEventsFunc)
114 (void (*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_CALLBACKHANDLE *);
115 typedef HBA_STATUS (* HBARegisterForAdapterEventsFunc)
116 (void (*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE,
117 HBA_CALLBACKHANDLE *);
118 typedef HBA_STATUS (* HBARegisterForAdapterPortEventsFunc)
119 (void (*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32), void *, HBA_HANDLE,
120 HBA_WWN, HBA_CALLBACKHANDLE *);
121 typedef HBA_STATUS (* HBARegisterForAdapterPortStatEventsFunc)
122 (void (*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE, HBA_WWN,
123 HBA_PORTSTATISTICS, HBA_UINT32, HBA_CALLBACKHANDLE *);
124 typedef HBA_STATUS (* HBARegisterForTargetEventsFunc)
125 (void (*)(void *, HBA_WWN, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE,
126 HBA_WWN, HBA_WWN, HBA_CALLBACKHANDLE *,
127 HBA_UINT32 );
128 typedef HBA_STATUS (* HBARegisterForLinkEventsFunc)
129 (void (*)(void *, HBA_WWN, HBA_UINT32, void *, HBA_UINT32), void *, void *,
130 HBA_UINT32, HBA_HANDLE, HBA_CALLBACKHANDLE *);
131 typedef HBA_STATUS (* HBASendRPLFunc)
132 (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_UINT32, void *, HBA_UINT32 *);
133 typedef HBA_STATUS (* HBASendRPSFunc)
134 (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_WWN, HBA_UINT32, void *,
135 HBA_UINT32 *);
136 typedef HBA_STATUS (* HBASendSRLFunc)
137 (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, void *, HBA_UINT32 *);
138 typedef HBA_STATUS (* HBASendLIRRFunc)
139 (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT8, HBA_UINT8, void *, HBA_UINT32 *);
140 typedef HBA_STATUS (* HBAGetFC4StatisticsFunc)
141 (HBA_HANDLE, HBA_WWN, HBA_UINT8, HBA_FC4STATISTICS *);
142 typedef HBA_STATUS (* HBAGetFCPStatisticsFunc)
143 (HBA_HANDLE, const HBA_SCSIID *, HBA_FC4STATISTICS *);
144 typedef HBA_STATUS (* HBASendRLSFunc)
145 (HBA_HANDLE, HBA_WWN, HBA_WWN, void *, HBA_UINT32 *);
148 /* Deprecated, but still supported functions */
149 typedef HBA_STATUS (* HBAGetFcpTargetMappingFunc)
150 (HBA_HANDLE, HBA_FCPTARGETMAPPING *);
151 typedef HBA_STATUS (* HBAGetFcpPersistentBindingFunc)
152 (HBA_HANDLE, HBA_FCPBINDING *);
153 typedef HBA_STATUS (* HBASendCTPassThruFunc)
154 (HBA_HANDLE, void *, HBA_UINT32, void *, HBA_UINT32);
155 typedef HBA_STATUS (* HBASendScsiInquiryFunc)
156 (HBA_HANDLE, HBA_WWN,HBA_UINT64, HBA_UINT8, HBA_UINT32, void *,
157 HBA_UINT32, void *, HBA_UINT32);
158 typedef HBA_STATUS (* HBASendReportLUNsFunc)
159 (HBA_HANDLE, HBA_WWN, void *, HBA_UINT32, void *, HBA_UINT32);
160 typedef HBA_STATUS (* HBASendReadCapacityFunc)
161 (HBA_HANDLE, HBA_WWN, HBA_UINT64, void *, HBA_UINT32, void *,
162 HBA_UINT32);
163 typedef HBA_STATUS (* HBASendRNIDFunc)
164 (HBA_HANDLE, HBA_WWN, HBA_WWNTYPE, void *, HBA_UINT32 *);
167 * This structure is needed since a Rev2 vendor library must still implement the
168 * Rev1 Register function in case it is called by a Rev1 wapper library. Still
169 * not STRICTLY neccesary, it provides clarity and keeps compilers happier
171 typedef struct HBA_EntryPoints {
172 HBAGetVersionFunc GetVersionHandler;
173 HBALoadLibraryFunc LoadLibraryHandler;
174 HBAFreeLibraryFunc FreeLibraryHandler;
175 HBAGetNumberOfAdaptersFunc GetNumberOfAdaptersHandler;
176 HBAGetAdapterNameFunc GetAdapterNameHandler;
177 HBAOpenAdapterFunc OpenAdapterHandler;
178 HBACloseAdapterFunc CloseAdapterHandler;
179 HBAGetAdapterAttributesFunc GetAdapterAttributesHandler;
180 HBAGetAdapterPortAttributesFunc GetAdapterPortAttributesHandler;
181 HBAGetPortStatisticsFunc GetPortStatisticsHandler;
182 HBAGetDiscoveredPortAttributesFunc GetDiscoveredPortAttributesHandler;
183 HBAGetPortAttributesByWWNFunc GetPortAttributesByWWNHandler;
184 HBASendCTPassThruFunc SendCTPassThruHandler;
185 HBARefreshInformationFunc RefreshInformationHandler;
186 HBAResetStatisticsFunc ResetStatisticsHandler;
187 HBAGetFcpTargetMappingFunc GetFcpTargetMappingHandler;
188 HBAGetFcpPersistentBindingFunc GetFcpPersistentBindingHandler;
189 HBAGetEventBufferFunc GetEventBufferHandler;
190 HBASetRNIDMgmtInfoFunc SetRNIDMgmtInfoHandler;
191 HBAGetRNIDMgmtInfoFunc GetRNIDMgmtInfoHandler;
192 HBASendRNIDFunc SendRNIDHandler;
193 HBASendScsiInquiryFunc ScsiInquiryHandler;
194 HBASendReportLUNsFunc ReportLUNsHandler;
195 HBASendReadCapacityFunc ReadCapacityHandler;
196 } HBA_ENTRYPOINTS, *PHBA_ENTRYPOINTS;
198 typedef struct HBA_EntryPointsV2 {
199 /* These first elements MUST MUST MUST match HBA_ENTRYPOINTS */
200 HBAGetVersionFunc GetVersionHandler;
201 HBALoadLibraryFunc LoadLibraryHandler;
202 HBAFreeLibraryFunc FreeLibraryHandler;
203 HBAGetNumberOfAdaptersFunc GetNumberOfAdaptersHandler;
204 HBAGetAdapterNameFunc GetAdapterNameHandler;
205 HBAOpenAdapterFunc OpenAdapterHandler;
206 HBACloseAdapterFunc CloseAdapterHandler;
207 HBAGetAdapterAttributesFunc GetAdapterAttributesHandler;
208 HBAGetAdapterPortAttributesFunc GetAdapterPortAttributesHandler;
209 HBAGetPortStatisticsFunc GetPortStatisticsHandler;
210 HBAGetDiscoveredPortAttributesFunc GetDiscoveredPortAttributesHandler;
211 HBAGetPortAttributesByWWNFunc GetPortAttributesByWWNHandler;
212 /* Next function depricated but still supported */
213 HBASendCTPassThruFunc SendCTPassThruHandler;
214 HBARefreshInformationFunc RefreshInformationHandler;
215 HBAResetStatisticsFunc ResetStatisticsHandler;
216 /* Next function depricated but still supported */
217 HBAGetFcpTargetMappingFunc GetFcpTargetMappingHandler;
218 /* Next function depricated but still supported */
219 HBAGetFcpPersistentBindingFunc GetFcpPersistentBindingHandler;
220 HBAGetEventBufferFunc GetEventBufferHandler;
221 HBASetRNIDMgmtInfoFunc SetRNIDMgmtInfoHandler;
222 HBAGetRNIDMgmtInfoFunc GetRNIDMgmtInfoHandler;
223 /* Next function depricated but still supported */
224 HBASendRNIDFunc SendRNIDHandler;
225 /* Next function depricated but still supported */
226 HBASendScsiInquiryFunc ScsiInquiryHandler;
227 /* Next function depricated but still supported */
228 HBASendReportLUNsFunc ReportLUNsHandler;
229 /* Next function depricated but still supported */
230 HBASendReadCapacityFunc ReadCapacityHandler;
232 /* Rev 2 Functions */
233 HBAOpenAdapterByWWNFunc OpenAdapterByWWNHandler;
234 HBAGetFcpTargetMappingV2Func GetFcpTargetMappingV2Handler;
235 HBASendCTPassThruV2Func SendCTPassThruV2Handler;
236 HBARefreshAdapterConfigurationFunc RefreshAdapterConfigurationHandler;
237 HBAGetBindingCapabilityFunc GetBindingCapabilityHandler;
238 HBAGetBindingSupportFunc GetBindingSupportHandler;
239 HBASetBindingSupportFunc SetBindingSupportHandler;
240 HBASetPersistentBindingV2Func SetPersistentBindingV2Handler;
241 HBAGetPersistentBindingV2Func GetPersistentBindingV2Handler;
242 HBARemovePersistentBindingFunc RemovePersistentBindingHandler;
243 HBARemoveAllPersistentBindingsFunc RemoveAllPersistentBindingsHandler;
244 HBASendRNIDV2Func SendRNIDV2Handler;
245 HBAScsiInquiryV2Func ScsiInquiryV2Handler;
246 HBAScsiReportLUNsV2Func ScsiReportLUNsV2Handler;
247 HBAScsiReadCapacityV2Func ScsiReadCapacityV2Handler;
248 HBAGetVendorLibraryAttributesFunc GetVendorLibraryAttributesHandler;
249 HBARemoveCallbackFunc RemoveCallbackHandler;
250 HBARegisterForAdapterAddEventsFunc RegisterForAdapterAddEventsHandler;
251 HBARegisterForAdapterEventsFunc RegisterForAdapterEventsHandler;
252 HBARegisterForAdapterPortEventsFunc RegisterForAdapterPortEventsHandler;
253 HBARegisterForAdapterPortStatEventsFunc
254 RegisterForAdapterPortStatEventsHandler;
255 HBARegisterForTargetEventsFunc RegisterForTargetEventsHandler;
256 HBARegisterForLinkEventsFunc RegisterForLinkEventsHandler;
257 HBASendRPLFunc SendRPLHandler;
258 HBASendRPSFunc SendRPSHandler;
259 HBASendSRLFunc SendSRLHandler;
260 HBASendLIRRFunc SendLIRRHandler;
261 HBAGetFC4StatisticsFunc GetFC4StatisticsHandler;
262 HBAGetFCPStatisticsFunc GetFCPStatisticsHandler;
263 HBASendRLSFunc SendRLSHandler;
264 } HBA_ENTRYPOINTSV2, *PHBA_ENTRYPOINTSV2;
266 typedef HBA_STATUS (* HBARegisterLibraryFunc)(HBA_ENTRYPOINTS *);
267 typedef HBA_STATUS (* HBARegisterLibraryV2Func)(HBA_ENTRYPOINTSV2 *);
269 /* Function Prototypes */
270 HBA_API HBA_STATUS HBA_RegisterLibrary(
271 HBA_ENTRYPOINTS *functionTable
274 HBA_API HBA_STATUS HBA_RegisterLibraryV2(
275 HBA_ENTRYPOINTSV2 *functionTable
278 #endif /* VENDOR_HBA_API_H */
280 #ifdef __cplusplus
282 #endif