diff options
Diffstat (limited to 'usr/src/lib/hbaapi/common/vendorhbaapi.h')
| -rw-r--r-- | usr/src/lib/hbaapi/common/vendorhbaapi.h | 284 | 
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 + + | 
