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