1 /******************************************************************************
4 * vendorhbaapi.h - incombination with hbaapi.h, defines interface to
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
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)
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 *******************************************************************************
33 * 12/12/2001 Original revision, code split out of hbaapi.h
34 * (for other changes... see the CVS logs)
35 ******************************************************************************/
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
*,
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 *,
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 *,
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 */