summaryrefslogtreecommitdiff
path: root/usr/src/lib/hbaapi/common/vendorhbaapi.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/hbaapi/common/vendorhbaapi.h')
-rw-r--r--usr/src/lib/hbaapi/common/vendorhbaapi.h284
1 files changed, 284 insertions, 0 deletions
diff --git a/usr/src/lib/hbaapi/common/vendorhbaapi.h b/usr/src/lib/hbaapi/common/vendorhbaapi.h
new file mode 100644
index 0000000000..d71fa55c3c
--- /dev/null
+++ b/usr/src/lib/hbaapi/common/vendorhbaapi.h
@@ -0,0 +1,284 @@
+/******************************************************************************
+ *
+ * Description
+ * vendorhbaapi.h - incombination with hbaapi.h, defines interface to
+ * vendor specific API
+ *
+ * License:
+ * The contents of this file are subject to the SNIA Public License
+ * Version 1.0 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * /http://www.snia.org/English/Resources/Code/OpenSource.html
+ *
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ * the License for the specific language governing rights and limitations
+ * under the License.
+ *
+ * The Original Code is SNIA HBA API general header file
+ *
+ * The Initial Developer of the Original Code is:
+ * Benjamin F. Kuo, Troika Networks, Inc. (benk@troikanetworks.com)
+ *
+ * Contributor(s):
+ * Tuan Lam, QLogic Corp. (t_lam@qlc.com)
+ * Dan Willie, Emulex Corp. (Dan.Willie@emulex.com)
+ * Dixon Hutchinson, Legato Systems, Inc. (dhutchin@legato.com)
+ * David Dillard, VERITAS Software Corp. (david.dillard@veritas.com)
+ *
+ *******************************************************************************
+ *
+ * Changes:
+ * 12/12/2001 Original revision, code split out of hbaapi.h
+ * (for other changes... see the CVS logs)
+ ******************************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifndef VENDOR_HBA_API_H
+#define VENDOR_HBA_API_H
+
+
+/* 4.2.12 HBA Library Function Table */
+typedef HBA_UINT32 (* HBAGetVersionFunc)();
+typedef HBA_STATUS (* HBALoadLibraryFunc)();
+typedef HBA_STATUS (* HBAFreeLibraryFunc)();
+typedef HBA_UINT32 (* HBAGetNumberOfAdaptersFunc)();
+typedef HBA_STATUS (* HBAGetAdapterNameFunc)(HBA_UINT32, char *);
+/*
+ * Open Adapter.... the vendor function is limmited to 16 bits,
+ * the wrapper library will mask off the upper 16.
+ * Maybe typedef should be:
+ * typedef HBA_UINT16 (* HBAOpenAdapterFunc)(char *);
+ */
+typedef HBA_HANDLE (* HBAOpenAdapterFunc)(char *);
+typedef HBA_STATUS (* HBAOpenAdapterByWWNFunc)
+ (HBA_HANDLE *, HBA_WWN);
+typedef void (* HBACloseAdapterFunc)(HBA_HANDLE);
+typedef HBA_STATUS (* HBAGetAdapterAttributesFunc)
+ (HBA_HANDLE, HBA_ADAPTERATTRIBUTES *);
+typedef HBA_STATUS (* HBAGetAdapterPortAttributesFunc)
+ (HBA_HANDLE, HBA_UINT32, HBA_PORTATTRIBUTES *);
+typedef HBA_STATUS (* HBAGetPortStatisticsFunc)
+ (HBA_HANDLE, HBA_UINT32, HBA_PORTSTATISTICS *);
+typedef HBA_STATUS (* HBAGetDiscoveredPortAttributesFunc)
+ (HBA_HANDLE, HBA_UINT32, HBA_UINT32, HBA_PORTATTRIBUTES *);
+typedef HBA_STATUS (* HBAGetPortAttributesByWWNFunc)
+ (HBA_HANDLE, HBA_WWN, HBA_PORTATTRIBUTES *);
+typedef HBA_STATUS (* HBASendCTPassThruV2Func)
+ (HBA_HANDLE, HBA_WWN, void *, HBA_UINT32, void *, HBA_UINT32 *);
+typedef void (* HBARefreshInformationFunc)(HBA_HANDLE);
+typedef void (* HBARefreshAdapterConfigurationFunc) ();
+typedef void (* HBAResetStatisticsFunc)(HBA_HANDLE, HBA_UINT32);
+typedef HBA_STATUS (* HBAGetFcpTargetMappingV2Func)
+ (HBA_HANDLE, HBA_WWN, HBA_FCPTARGETMAPPINGV2 *);
+typedef HBA_STATUS (* HBAGetBindingCapabilityFunc)
+ (HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY *);
+typedef HBA_STATUS (* HBAGetBindingSupportFunc)
+ (HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY *);
+typedef HBA_STATUS (* HBASetBindingSupportFunc)
+ (HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY);
+typedef HBA_STATUS (* HBASetPersistentBindingV2Func)
+ (HBA_HANDLE, HBA_WWN, const HBA_FCPBINDING2 *);
+typedef HBA_STATUS (* HBAGetPersistentBindingV2Func)
+ (HBA_HANDLE, HBA_WWN, HBA_FCPBINDING2 *);
+typedef HBA_STATUS (* HBARemovePersistentBindingFunc)
+ (HBA_HANDLE, HBA_WWN, const HBA_FCPBINDING2 *);
+typedef HBA_STATUS (* HBARemoveAllPersistentBindingsFunc)
+ (HBA_HANDLE, HBA_WWN);
+typedef HBA_STATUS (* HBAGetEventBufferFunc)
+ (HBA_HANDLE, HBA_EVENTINFO *, HBA_UINT32 *);
+typedef HBA_STATUS (* HBASetRNIDMgmtInfoFunc)
+ (HBA_HANDLE, HBA_MGMTINFO);
+typedef HBA_STATUS (* HBAGetRNIDMgmtInfoFunc)
+ (HBA_HANDLE, HBA_MGMTINFO *);
+typedef HBA_STATUS (* HBASendRNIDV2Func)
+ (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_UINT32, void *, HBA_UINT32*);
+typedef HBA_STATUS (* HBAScsiInquiryV2Func)
+ (HBA_HANDLE,HBA_WWN,HBA_WWN, HBA_UINT64, HBA_UINT8, HBA_UINT8,
+ void *, HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *);
+typedef HBA_STATUS (* HBAScsiReportLUNsV2Func)
+ (HBA_HANDLE, HBA_WWN, HBA_WWN, void *, HBA_UINT32 *, HBA_UINT8 *,
+ void *, HBA_UINT32 *);
+typedef HBA_STATUS (* HBAScsiReadCapacityV2Func)
+ (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT64, void *, HBA_UINT32 *,
+ HBA_UINT8 *, void *, HBA_UINT32 *);
+typedef HBA_UINT32 (* HBAGetVendorLibraryAttributesFunc)
+ (HBA_LIBRARYATTRIBUTES *);
+typedef HBA_STATUS (* HBARemoveCallbackFunc) (HBA_CALLBACKHANDLE);
+typedef HBA_STATUS (* HBARegisterForAdapterAddEventsFunc)
+ (void (*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_CALLBACKHANDLE *);
+typedef HBA_STATUS (* HBARegisterForAdapterEventsFunc)
+ (void (*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE,
+ HBA_CALLBACKHANDLE *);
+typedef HBA_STATUS (* HBARegisterForAdapterPortEventsFunc)
+ (void (*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32), void *, HBA_HANDLE,
+ HBA_WWN, HBA_CALLBACKHANDLE *);
+typedef HBA_STATUS (* HBARegisterForAdapterPortStatEventsFunc)
+ (void (*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE, HBA_WWN,
+ HBA_PORTSTATISTICS, HBA_UINT32, HBA_CALLBACKHANDLE *);
+typedef HBA_STATUS (* HBARegisterForTargetEventsFunc)
+ (void (*)(void *, HBA_WWN, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE,
+ HBA_WWN, HBA_WWN, HBA_CALLBACKHANDLE *,
+ HBA_UINT32 );
+typedef HBA_STATUS (* HBARegisterForLinkEventsFunc)
+ (void (*)(void *, HBA_WWN, HBA_UINT32, void *, HBA_UINT32), void *, void *,
+ HBA_UINT32, HBA_HANDLE, HBA_CALLBACKHANDLE *);
+typedef HBA_STATUS (* HBASendRPLFunc)
+ (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_UINT32, void *, HBA_UINT32 *);
+typedef HBA_STATUS (* HBASendRPSFunc)
+ (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_WWN, HBA_UINT32, void *,
+ HBA_UINT32 *);
+typedef HBA_STATUS (* HBASendSRLFunc)
+ (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, void *, HBA_UINT32 *);
+typedef HBA_STATUS (* HBASendLIRRFunc)
+ (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT8, HBA_UINT8, void *, HBA_UINT32 *);
+typedef HBA_STATUS (* HBAGetFC4StatisticsFunc)
+ (HBA_HANDLE, HBA_WWN, HBA_UINT8, HBA_FC4STATISTICS *);
+typedef HBA_STATUS (* HBAGetFCPStatisticsFunc)
+ (HBA_HANDLE, const HBA_SCSIID *, HBA_FC4STATISTICS *);
+typedef HBA_STATUS (* HBASendRLSFunc)
+ (HBA_HANDLE, HBA_WWN, HBA_WWN, void *, HBA_UINT32 *);
+
+
+/* Deprecated, but still supported functions */
+typedef HBA_STATUS (* HBAGetFcpTargetMappingFunc)
+ (HBA_HANDLE, HBA_FCPTARGETMAPPING *);
+typedef HBA_STATUS (* HBAGetFcpPersistentBindingFunc)
+ (HBA_HANDLE, HBA_FCPBINDING *);
+typedef HBA_STATUS (* HBASendCTPassThruFunc)
+ (HBA_HANDLE, void *, HBA_UINT32, void *, HBA_UINT32);
+typedef HBA_STATUS (* HBASendScsiInquiryFunc)
+ (HBA_HANDLE, HBA_WWN,HBA_UINT64, HBA_UINT8, HBA_UINT32, void *,
+ HBA_UINT32, void *, HBA_UINT32);
+typedef HBA_STATUS (* HBASendReportLUNsFunc)
+ (HBA_HANDLE, HBA_WWN, void *, HBA_UINT32, void *, HBA_UINT32);
+typedef HBA_STATUS (* HBASendReadCapacityFunc)
+ (HBA_HANDLE, HBA_WWN, HBA_UINT64, void *, HBA_UINT32, void *,
+ HBA_UINT32);
+typedef HBA_STATUS (* HBASendRNIDFunc)
+ (HBA_HANDLE, HBA_WWN, HBA_WWNTYPE, void *, HBA_UINT32 *);
+
+/*
+ * This structure is needed since a Rev2 vendor library must still implement the
+ * Rev1 Register function in case it is called by a Rev1 wapper library. Still
+ * not STRICTLY neccesary, it provides clarity and keeps compilers happier
+ */
+typedef struct HBA_EntryPoints {
+ HBAGetVersionFunc GetVersionHandler;
+ HBALoadLibraryFunc LoadLibraryHandler;
+ HBAFreeLibraryFunc FreeLibraryHandler;
+ HBAGetNumberOfAdaptersFunc GetNumberOfAdaptersHandler;
+ HBAGetAdapterNameFunc GetAdapterNameHandler;
+ HBAOpenAdapterFunc OpenAdapterHandler;
+ HBACloseAdapterFunc CloseAdapterHandler;
+ HBAGetAdapterAttributesFunc GetAdapterAttributesHandler;
+ HBAGetAdapterPortAttributesFunc GetAdapterPortAttributesHandler;
+ HBAGetPortStatisticsFunc GetPortStatisticsHandler;
+ HBAGetDiscoveredPortAttributesFunc GetDiscoveredPortAttributesHandler;
+ HBAGetPortAttributesByWWNFunc GetPortAttributesByWWNHandler;
+ HBASendCTPassThruFunc SendCTPassThruHandler;
+ HBARefreshInformationFunc RefreshInformationHandler;
+ HBAResetStatisticsFunc ResetStatisticsHandler;
+ HBAGetFcpTargetMappingFunc GetFcpTargetMappingHandler;
+ HBAGetFcpPersistentBindingFunc GetFcpPersistentBindingHandler;
+ HBAGetEventBufferFunc GetEventBufferHandler;
+ HBASetRNIDMgmtInfoFunc SetRNIDMgmtInfoHandler;
+ HBAGetRNIDMgmtInfoFunc GetRNIDMgmtInfoHandler;
+ HBASendRNIDFunc SendRNIDHandler;
+ HBASendScsiInquiryFunc ScsiInquiryHandler;
+ HBASendReportLUNsFunc ReportLUNsHandler;
+ HBASendReadCapacityFunc ReadCapacityHandler;
+} HBA_ENTRYPOINTS, *PHBA_ENTRYPOINTS;
+
+typedef struct HBA_EntryPointsV2 {
+ /* These first elements MUST MUST MUST match HBA_ENTRYPOINTS */
+ HBAGetVersionFunc GetVersionHandler;
+ HBALoadLibraryFunc LoadLibraryHandler;
+ HBAFreeLibraryFunc FreeLibraryHandler;
+ HBAGetNumberOfAdaptersFunc GetNumberOfAdaptersHandler;
+ HBAGetAdapterNameFunc GetAdapterNameHandler;
+ HBAOpenAdapterFunc OpenAdapterHandler;
+ HBACloseAdapterFunc CloseAdapterHandler;
+ HBAGetAdapterAttributesFunc GetAdapterAttributesHandler;
+ HBAGetAdapterPortAttributesFunc GetAdapterPortAttributesHandler;
+ HBAGetPortStatisticsFunc GetPortStatisticsHandler;
+ HBAGetDiscoveredPortAttributesFunc GetDiscoveredPortAttributesHandler;
+ HBAGetPortAttributesByWWNFunc GetPortAttributesByWWNHandler;
+ /* Next function depricated but still supported */
+ HBASendCTPassThruFunc SendCTPassThruHandler;
+ HBARefreshInformationFunc RefreshInformationHandler;
+ HBAResetStatisticsFunc ResetStatisticsHandler;
+ /* Next function depricated but still supported */
+ HBAGetFcpTargetMappingFunc GetFcpTargetMappingHandler;
+ /* Next function depricated but still supported */
+ HBAGetFcpPersistentBindingFunc GetFcpPersistentBindingHandler;
+ HBAGetEventBufferFunc GetEventBufferHandler;
+ HBASetRNIDMgmtInfoFunc SetRNIDMgmtInfoHandler;
+ HBAGetRNIDMgmtInfoFunc GetRNIDMgmtInfoHandler;
+ /* Next function depricated but still supported */
+ HBASendRNIDFunc SendRNIDHandler;
+ /* Next function depricated but still supported */
+ HBASendScsiInquiryFunc ScsiInquiryHandler;
+ /* Next function depricated but still supported */
+ HBASendReportLUNsFunc ReportLUNsHandler;
+ /* Next function depricated but still supported */
+ HBASendReadCapacityFunc ReadCapacityHandler;
+
+ /* Rev 2 Functions */
+ HBAOpenAdapterByWWNFunc OpenAdapterByWWNHandler;
+ HBAGetFcpTargetMappingV2Func GetFcpTargetMappingV2Handler;
+ HBASendCTPassThruV2Func SendCTPassThruV2Handler;
+ HBARefreshAdapterConfigurationFunc RefreshAdapterConfigurationHandler;
+ HBAGetBindingCapabilityFunc GetBindingCapabilityHandler;
+ HBAGetBindingSupportFunc GetBindingSupportHandler;
+ HBASetBindingSupportFunc SetBindingSupportHandler;
+ HBASetPersistentBindingV2Func SetPersistentBindingV2Handler;
+ HBAGetPersistentBindingV2Func GetPersistentBindingV2Handler;
+ HBARemovePersistentBindingFunc RemovePersistentBindingHandler;
+ HBARemoveAllPersistentBindingsFunc RemoveAllPersistentBindingsHandler;
+ HBASendRNIDV2Func SendRNIDV2Handler;
+ HBAScsiInquiryV2Func ScsiInquiryV2Handler;
+ HBAScsiReportLUNsV2Func ScsiReportLUNsV2Handler;
+ HBAScsiReadCapacityV2Func ScsiReadCapacityV2Handler;
+ HBAGetVendorLibraryAttributesFunc GetVendorLibraryAttributesHandler;
+ HBARemoveCallbackFunc RemoveCallbackHandler;
+ HBARegisterForAdapterAddEventsFunc RegisterForAdapterAddEventsHandler;
+ HBARegisterForAdapterEventsFunc RegisterForAdapterEventsHandler;
+ HBARegisterForAdapterPortEventsFunc RegisterForAdapterPortEventsHandler;
+ HBARegisterForAdapterPortStatEventsFunc
+ RegisterForAdapterPortStatEventsHandler;
+ HBARegisterForTargetEventsFunc RegisterForTargetEventsHandler;
+ HBARegisterForLinkEventsFunc RegisterForLinkEventsHandler;
+ HBASendRPLFunc SendRPLHandler;
+ HBASendRPSFunc SendRPSHandler;
+ HBASendSRLFunc SendSRLHandler;
+ HBASendLIRRFunc SendLIRRHandler;
+ HBAGetFC4StatisticsFunc GetFC4StatisticsHandler;
+ HBAGetFCPStatisticsFunc GetFCPStatisticsHandler;
+ HBASendRLSFunc SendRLSHandler;
+} HBA_ENTRYPOINTSV2, *PHBA_ENTRYPOINTSV2;
+
+typedef HBA_STATUS (* HBARegisterLibraryFunc)(HBA_ENTRYPOINTS *);
+typedef HBA_STATUS (* HBARegisterLibraryV2Func)(HBA_ENTRYPOINTSV2 *);
+
+/* Function Prototypes */
+HBA_API HBA_STATUS HBA_RegisterLibrary(
+ HBA_ENTRYPOINTS *functionTable
+ );
+
+HBA_API HBA_STATUS HBA_RegisterLibraryV2(
+ HBA_ENTRYPOINTSV2 *functionTable
+ );
+
+#endif /* VENDOR_HBA_API_H */
+
+#ifdef __cplusplus
+}
+#endif
+
+