OpenSolaris_b135/lib/smhba/common/vendorsmhbaapi.h

/*
 * ****************************************************************************
 *
 * 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)
 * ****************************************************************************
 */
/*
 * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

#ifndef _VENDORSMHBAAPI_H_
#define	_VENDORSMHBAAPI_H_

#ifdef __cplusplus
extern "C" {
#endif

#include <vendorhbaapi.h>

/* SM-HBA-2 6.9.2 Function Prototypes */
typedef HBA_UINT32 (* SMHBAGetVersionFunc)();
typedef HBA_UINT32 (* SMHBAGetWrapperLibraryAttributesFunc)
	(HBA_UINT32, SMHBA_LIBRARYATTRIBUTES *);
typedef HBA_UINT32 (* SMHBAGetVendorLibraryAttributesFunc)
	(SMHBA_LIBRARYATTRIBUTES *);
typedef HBA_STATUS (* SMHBAGetAdapterAttributesFunc)
	(HBA_HANDLE, SMHBA_ADAPTERATTRIBUTES *);
typedef HBA_STATUS (* SMHBAGetNumberOfPortsFunc)
	(HBA_HANDLE, HBA_UINT32 *);
typedef HBA_STATUS (* SMHBAGetPortTypeFunc)
	(HBA_HANDLE, HBA_UINT32, HBA_PORTTYPE *);
typedef HBA_STATUS (* SMHBAGetAdapterPortAttributesFunc)
	(HBA_HANDLE, HBA_UINT32, SMHBA_PORTATTRIBUTES *);
typedef HBA_STATUS (* SMHBAGetDiscoveredPortAttributesFunc)
	(HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_PORTATTRIBUTES *);
typedef HBA_STATUS (* SMHBAGetPortAttributesByWWNFunc)
	(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_PORTATTRIBUTES *);
typedef HBA_STATUS (* SMHBAGetFCPhyAttributesFunc)
	(HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_FC_PHY *);
typedef HBA_STATUS (* SMHBAGetSASPhyAttributesFunc)
	(HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_SAS_PHY *);
typedef HBA_STATUS (* SMHBAGetProtocolStatisticsFunc)
	(HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_PROTOCOLSTATISTICS *);
typedef HBA_STATUS (* SMHBAGetPhyStatisticsFunc)
	(HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_PHYSTATISTICS *);
typedef HBA_STATUS (* SMHBASendTESTFunc)
	(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, void *, HBA_UINT32);
typedef HBA_STATUS (* SMHBASendECHOFunc)
	(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, void *, HBA_UINT32,
	void *, HBA_UINT32 *);
typedef HBA_STATUS (* SMHBASendSMPPassThruFunc)
	(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN, void *, HBA_UINT32, void *,
	HBA_UINT32 *);
typedef HBA_STATUS (* SMHBAGetBindingCapabilityFunc)
	(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_BIND_CAPABILITY *);
typedef HBA_STATUS (* SMHBAGetBindingSupportFunc)
	(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_BIND_CAPABILITY *);
typedef HBA_STATUS (* SMHBASetBindingSupportFunc)
	(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_BIND_CAPABILITY);
typedef HBA_STATUS (* SMHBAGetTargetMappingFunc)
	(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_TARGETMAPPING *);
typedef HBA_STATUS (* SMHBAGetPersistentBindingFunc)
	(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_BINDING *);
typedef HBA_STATUS (* SMHBASetPersistentBindingFunc)
	(HBA_HANDLE, HBA_WWN, HBA_WWN, const SMHBA_BINDING *);
typedef HBA_STATUS (* SMHBARemovePersistentBindingFunc)
	(HBA_HANDLE, HBA_WWN, HBA_WWN, const SMHBA_BINDING *);
typedef HBA_STATUS (* SMHBARemoveAllPersistentBindingsFunc)
	(HBA_HANDLE, HBA_WWN, HBA_WWN);
typedef HBA_STATUS (* SMHBAGetLUNStatisticsFunc)
	(HBA_HANDLE, const HBA_SCSIID *, SMHBA_PROTOCOLSTATISTICS *);
typedef HBA_STATUS (* SMHBARegisterForAdapterAddEventsFunc)
	(void (*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_CALLBACKHANDLE *);
typedef HBA_STATUS (* SMHBARegisterForAdapterEventsFunc)
	(void (*)(void *, HBA_WWN, HBA_UINT32),
	void *, HBA_HANDLE, HBA_CALLBACKHANDLE *);
typedef HBA_STATUS    (* SMHBARegisterForAdapterPortEventsFunc)
	(void (*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32),
	void *, HBA_HANDLE, HBA_WWN, HBA_UINT32, HBA_CALLBACKHANDLE *);
typedef HBA_STATUS    (* SMHBARegisterForAdapterPortStatEventsFunc)
	(void (*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32),
	void *, HBA_HANDLE, HBA_WWN, HBA_UINT32, SMHBA_PROTOCOLSTATISTICS,
	HBA_UINT32, HBA_CALLBACKHANDLE *);
typedef HBA_STATUS    (* SMHBARegisterForAdapterPhyStatEventsFunc)
	(void (*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32),
	void *, HBA_HANDLE, HBA_WWN, HBA_UINT32, SMHBA_PHYSTATISTICS,
	HBA_UINT32, HBA_CALLBACKHANDLE *);
typedef HBA_STATUS    (* SMHBARegisterForTargetEventsFunc)
	(void (*)(void *, HBA_WWN, HBA_WWN, HBA_WWN, HBA_UINT32),
	void *, HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN,
	HBA_CALLBACKHANDLE *, HBA_UINT32);
typedef HBA_STATUS    (* SMHBAScsiInquiryFunc)
	(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN, SMHBA_SCSILUN, HBA_UINT8,
	HBA_UINT8, void *, HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *);
typedef HBA_STATUS    (* SMHBAScsiReportLUNsFunc)
	(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN, void *, HBA_UINT32 *,
	HBA_UINT8 *, void *, HBA_UINT32 *);
typedef HBA_STATUS    (* SMHBAScsiReadCapacityFunc)
	(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN, SMHBA_SCSILUN, void *,
	HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *);

/* SM-HBA-2 6.9.3 Entry Point Data Declarations */
typedef struct SMHBA_EntryPoints {
	SMHBAGetVersionFunc			GetVersionHandler;
	HBALoadLibraryFunc			LoadLibraryHandler;
	HBAFreeLibraryFunc			FreeLibraryHandler;
	HBAGetNumberOfAdaptersFunc		GetNumberOfAdaptersHandler;
	HBARefreshInformationFunc		RefreshInformationHandler;
	SMHBAGetVendorLibraryAttributesFunc
		GetVendorLibraryAttributesHandler;
	HBAGetAdapterNameFunc			GetAdapterNameHandler;
	HBAOpenAdapterFunc			OpenAdapterHandler;
	HBACloseAdapterFunc			CloseAdapterHandler;
	SMHBAGetAdapterAttributesFunc		GetAdapterAttributesHandler;
	SMHBAGetNumberOfPortsFunc		GetNumberOfPortsHandler;
	SMHBAGetPortTypeFunc			GetPortTypeHandler;
	SMHBAGetAdapterPortAttributesFunc
		GetAdapterPortAttributesHandler;
	SMHBAGetDiscoveredPortAttributesFunc
		GetDiscoveredPortAttributesHandler;
	SMHBAGetPortAttributesByWWNFunc		GetPortAttributesByWWNHandler;
	SMHBAGetFCPhyAttributesFunc		GetFCPhyAttributesHandler;
	SMHBAGetSASPhyAttributesFunc		GetSASPhyAttributesHandler;
	SMHBAGetProtocolStatisticsFunc		GetProtocolStatisticsHandler;
	SMHBAGetPhyStatisticsFunc		GetPhyStatisticsHandler;
	HBASendCTPassThruV2Func			SendCTPassThruV2Handler;
	HBASetRNIDMgmtInfoFunc			SetRNIDMgmtInfoHandler;
	HBAGetRNIDMgmtInfoFunc			GetRNIDMgmtInfoHandler;
	HBASendRNIDV2Func			SendRNIDV2Handler;
	HBASendRPLFunc				SendRPLHandler;
	HBASendRPSFunc				SendRPSHandler;
	HBASendSRLFunc				SendSRLHandler;
	HBASendLIRRFunc				SendLIRRHandler;
	HBASendRLSFunc				SendRLSHandler;
	SMHBASendTESTFunc			SendTESTHandler;
	SMHBASendECHOFunc			SendECHOHandler;
	SMHBASendSMPPassThruFunc		SendSMPPassThruHandler;
	SMHBAGetBindingCapabilityFunc		GetBindingCapabilityHandler;
	SMHBAGetBindingSupportFunc		GetBindingSupportHandler;
	SMHBASetBindingSupportFunc		SetBindingSupportHandler;
	SMHBAGetTargetMappingFunc		GetTargetMappingHandler;
	SMHBAGetPersistentBindingFunc		GetPersistentBindingHandler;
	SMHBASetPersistentBindingFunc		SetPersistentBindingHandler;
	SMHBARemovePersistentBindingFunc	RemovePersistentBindingHandler;
	SMHBARemoveAllPersistentBindingsFunc
		RemoveAllPersistentBindingsHandler;
	SMHBAGetLUNStatisticsFunc		GetLUNStatisticsHandler;
	SMHBAScsiInquiryFunc			ScsiInquiryHandler;
	SMHBAScsiReportLUNsFunc			ScsiReportLUNsHandler;
	SMHBAScsiReadCapacityFunc		ScsiReadCapacityHandler;
	SMHBARegisterForAdapterAddEventsFunc
		RegisterForAdapterAddEventsHandler;
	SMHBARegisterForAdapterEventsFunc	RegisterForAdapterEventsHandler;
	SMHBARegisterForAdapterPortEventsFunc
		RegisterForAdapterPortEventsHandler;
	SMHBARegisterForAdapterPortStatEventsFunc
		RegisterForAdapterPortStatEventsHandler;
	SMHBARegisterForAdapterPhyStatEventsFunc
		RegisterForAdapterPhyStatEventsHandler;
	SMHBARegisterForTargetEventsFunc	RegisterForTargetEventsHandler;
	HBARegisterForLinkEventsFunc		RegisterForLinkEventsHandler;
	HBARemoveCallbackFunc			RemoveCallbackHandler;
} SMHBA_ENTRYPOINTS, *PSMHBA_ENTRYPOINTS;

typedef HBA_UINT32 (* SMHBARegisterLibraryFunc)(SMHBA_ENTRYPOINTS *);

HBA_STATUS SMHBA_RegisterLibrary(
	SMHBA_ENTRYPOINTS	*functionTable
);

#ifdef __cplusplus
}
#endif

#endif /* _VENDORSMHBAAPI_H_ */