1*9e86db79SHyon Kim /* 2*9e86db79SHyon Kim * **************************************************************************** 3*9e86db79SHyon Kim * 4*9e86db79SHyon Kim * Description 5*9e86db79SHyon Kim * vendorhbaapi.h - incombination with hbaapi.h, defines interface to 6*9e86db79SHyon Kim * vendor specific API 7*9e86db79SHyon Kim * 8*9e86db79SHyon Kim * License: 9*9e86db79SHyon Kim * The contents of this file are subject to the SNIA Public License 10*9e86db79SHyon Kim * Version 1.0 (the "License"); you may not use this file except in 11*9e86db79SHyon Kim * compliance with the License. You may obtain a copy of the License at 12*9e86db79SHyon Kim * 13*9e86db79SHyon Kim * /http://www.snia.org/English/Resources/Code/OpenSource.html 14*9e86db79SHyon Kim * 15*9e86db79SHyon Kim * Software distributed under the License is distributed on an "AS IS" 16*9e86db79SHyon Kim * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 17*9e86db79SHyon Kim * the License for the specific language governing rights and limitations 18*9e86db79SHyon Kim * under the License. 19*9e86db79SHyon Kim * 20*9e86db79SHyon Kim * The Original Code is SNIA HBA API general header file 21*9e86db79SHyon Kim * 22*9e86db79SHyon Kim * The Initial Developer of the Original Code is: 23*9e86db79SHyon Kim * Benjamin F. Kuo, Troika Networks, Inc. (benk@troikanetworks.com) 24*9e86db79SHyon Kim * 25*9e86db79SHyon Kim * Contributor(s): 26*9e86db79SHyon Kim * Tuan Lam, QLogic Corp. (t_lam@qlc.com) 27*9e86db79SHyon Kim * Dan Willie, Emulex Corp. (Dan.Willie@emulex.com) 28*9e86db79SHyon Kim * Dixon Hutchinson, Legato Systems, Inc. (dhutchin@legato.com) 29*9e86db79SHyon Kim * David Dillard, VERITAS Software Corp. (david.dillard@veritas.com) 30*9e86db79SHyon Kim * 31*9e86db79SHyon Kim * **************************************************************************** 32*9e86db79SHyon Kim * 33*9e86db79SHyon Kim * Changes: 34*9e86db79SHyon Kim * 12/12/2001 Original revision, code split out of hbaapi.h 35*9e86db79SHyon Kim * (for other changes... see the CVS logs) 36*9e86db79SHyon Kim * **************************************************************************** 37*9e86db79SHyon Kim */ 38*9e86db79SHyon Kim /* 39*9e86db79SHyon Kim * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 40*9e86db79SHyon Kim * Use is subject to license terms. 41*9e86db79SHyon Kim */ 42*9e86db79SHyon Kim 43*9e86db79SHyon Kim #ifndef _VENDORSMHBAAPI_H_ 44*9e86db79SHyon Kim #define _VENDORSMHBAAPI_H_ 45*9e86db79SHyon Kim 46*9e86db79SHyon Kim #ifdef __cplusplus 47*9e86db79SHyon Kim extern "C" { 48*9e86db79SHyon Kim #endif 49*9e86db79SHyon Kim 50*9e86db79SHyon Kim #include <vendorhbaapi.h> 51*9e86db79SHyon Kim 52*9e86db79SHyon Kim /* SM-HBA-2 6.9.2 Function Prototypes */ 53*9e86db79SHyon Kim typedef HBA_UINT32 (* SMHBAGetVersionFunc)(); 54*9e86db79SHyon Kim typedef HBA_UINT32 (* SMHBAGetWrapperLibraryAttributesFunc) 55*9e86db79SHyon Kim (HBA_UINT32, SMHBA_LIBRARYATTRIBUTES *); 56*9e86db79SHyon Kim typedef HBA_UINT32 (* SMHBAGetVendorLibraryAttributesFunc) 57*9e86db79SHyon Kim (SMHBA_LIBRARYATTRIBUTES *); 58*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAGetAdapterAttributesFunc) 59*9e86db79SHyon Kim (HBA_HANDLE, SMHBA_ADAPTERATTRIBUTES *); 60*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAGetNumberOfPortsFunc) 61*9e86db79SHyon Kim (HBA_HANDLE, HBA_UINT32 *); 62*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAGetPortTypeFunc) 63*9e86db79SHyon Kim (HBA_HANDLE, HBA_UINT32, HBA_PORTTYPE *); 64*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAGetAdapterPortAttributesFunc) 65*9e86db79SHyon Kim (HBA_HANDLE, HBA_UINT32, SMHBA_PORTATTRIBUTES *); 66*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAGetDiscoveredPortAttributesFunc) 67*9e86db79SHyon Kim (HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_PORTATTRIBUTES *); 68*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAGetPortAttributesByWWNFunc) 69*9e86db79SHyon Kim (HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_PORTATTRIBUTES *); 70*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAGetFCPhyAttributesFunc) 71*9e86db79SHyon Kim (HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_FC_PHY *); 72*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAGetSASPhyAttributesFunc) 73*9e86db79SHyon Kim (HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_SAS_PHY *); 74*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAGetProtocolStatisticsFunc) 75*9e86db79SHyon Kim (HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_PROTOCOLSTATISTICS *); 76*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAGetPhyStatisticsFunc) 77*9e86db79SHyon Kim (HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_PHYSTATISTICS *); 78*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBASendTESTFunc) 79*9e86db79SHyon Kim (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, void *, HBA_UINT32); 80*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBASendECHOFunc) 81*9e86db79SHyon Kim (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, void *, HBA_UINT32, 82*9e86db79SHyon Kim void *, HBA_UINT32 *); 83*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBASendSMPPassThruFunc) 84*9e86db79SHyon Kim (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN, void *, HBA_UINT32, void *, 85*9e86db79SHyon Kim HBA_UINT32 *); 86*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAGetBindingCapabilityFunc) 87*9e86db79SHyon Kim (HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_BIND_CAPABILITY *); 88*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAGetBindingSupportFunc) 89*9e86db79SHyon Kim (HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_BIND_CAPABILITY *); 90*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBASetBindingSupportFunc) 91*9e86db79SHyon Kim (HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_BIND_CAPABILITY); 92*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAGetTargetMappingFunc) 93*9e86db79SHyon Kim (HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_TARGETMAPPING *); 94*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAGetPersistentBindingFunc) 95*9e86db79SHyon Kim (HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_BINDING *); 96*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBASetPersistentBindingFunc) 97*9e86db79SHyon Kim (HBA_HANDLE, HBA_WWN, HBA_WWN, const SMHBA_BINDING *); 98*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBARemovePersistentBindingFunc) 99*9e86db79SHyon Kim (HBA_HANDLE, HBA_WWN, HBA_WWN, const SMHBA_BINDING *); 100*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBARemoveAllPersistentBindingsFunc) 101*9e86db79SHyon Kim (HBA_HANDLE, HBA_WWN, HBA_WWN); 102*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAGetLUNStatisticsFunc) 103*9e86db79SHyon Kim (HBA_HANDLE, const HBA_SCSIID *, SMHBA_PROTOCOLSTATISTICS *); 104*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBARegisterForAdapterAddEventsFunc) 105*9e86db79SHyon Kim (void (*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_CALLBACKHANDLE *); 106*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBARegisterForAdapterEventsFunc) 107*9e86db79SHyon Kim (void (*)(void *, HBA_WWN, HBA_UINT32), 108*9e86db79SHyon Kim void *, HBA_HANDLE, HBA_CALLBACKHANDLE *); 109*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBARegisterForAdapterPortEventsFunc) 110*9e86db79SHyon Kim (void (*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32), 111*9e86db79SHyon Kim void *, HBA_HANDLE, HBA_WWN, HBA_UINT32, HBA_CALLBACKHANDLE *); 112*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBARegisterForAdapterPortStatEventsFunc) 113*9e86db79SHyon Kim (void (*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32), 114*9e86db79SHyon Kim void *, HBA_HANDLE, HBA_WWN, HBA_UINT32, SMHBA_PROTOCOLSTATISTICS, 115*9e86db79SHyon Kim HBA_UINT32, HBA_CALLBACKHANDLE *); 116*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBARegisterForAdapterPhyStatEventsFunc) 117*9e86db79SHyon Kim (void (*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32), 118*9e86db79SHyon Kim void *, HBA_HANDLE, HBA_WWN, HBA_UINT32, SMHBA_PHYSTATISTICS, 119*9e86db79SHyon Kim HBA_UINT32, HBA_CALLBACKHANDLE *); 120*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBARegisterForTargetEventsFunc) 121*9e86db79SHyon Kim (void (*)(void *, HBA_WWN, HBA_WWN, HBA_WWN, HBA_UINT32), 122*9e86db79SHyon Kim void *, HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN, 123*9e86db79SHyon Kim HBA_CALLBACKHANDLE *, HBA_UINT32); 124*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAScsiInquiryFunc) 125*9e86db79SHyon Kim (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN, SMHBA_SCSILUN, HBA_UINT8, 126*9e86db79SHyon Kim HBA_UINT8, void *, HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *); 127*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAScsiReportLUNsFunc) 128*9e86db79SHyon Kim (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN, void *, HBA_UINT32 *, 129*9e86db79SHyon Kim HBA_UINT8 *, void *, HBA_UINT32 *); 130*9e86db79SHyon Kim typedef HBA_STATUS (* SMHBAScsiReadCapacityFunc) 131*9e86db79SHyon Kim (HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN, SMHBA_SCSILUN, void *, 132*9e86db79SHyon Kim HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *); 133*9e86db79SHyon Kim 134*9e86db79SHyon Kim /* SM-HBA-2 6.9.3 Entry Point Data Declarations */ 135*9e86db79SHyon Kim typedef struct SMHBA_EntryPoints { 136*9e86db79SHyon Kim SMHBAGetVersionFunc GetVersionHandler; 137*9e86db79SHyon Kim HBALoadLibraryFunc LoadLibraryHandler; 138*9e86db79SHyon Kim HBAFreeLibraryFunc FreeLibraryHandler; 139*9e86db79SHyon Kim HBAGetNumberOfAdaptersFunc GetNumberOfAdaptersHandler; 140*9e86db79SHyon Kim HBARefreshInformationFunc RefreshInformationHandler; 141*9e86db79SHyon Kim SMHBAGetVendorLibraryAttributesFunc 142*9e86db79SHyon Kim GetVendorLibraryAttributesHandler; 143*9e86db79SHyon Kim HBAGetAdapterNameFunc GetAdapterNameHandler; 144*9e86db79SHyon Kim HBAOpenAdapterFunc OpenAdapterHandler; 145*9e86db79SHyon Kim HBACloseAdapterFunc CloseAdapterHandler; 146*9e86db79SHyon Kim SMHBAGetAdapterAttributesFunc GetAdapterAttributesHandler; 147*9e86db79SHyon Kim SMHBAGetNumberOfPortsFunc GetNumberOfPortsHandler; 148*9e86db79SHyon Kim SMHBAGetPortTypeFunc GetPortTypeHandler; 149*9e86db79SHyon Kim SMHBAGetAdapterPortAttributesFunc 150*9e86db79SHyon Kim GetAdapterPortAttributesHandler; 151*9e86db79SHyon Kim SMHBAGetDiscoveredPortAttributesFunc 152*9e86db79SHyon Kim GetDiscoveredPortAttributesHandler; 153*9e86db79SHyon Kim SMHBAGetPortAttributesByWWNFunc GetPortAttributesByWWNHandler; 154*9e86db79SHyon Kim SMHBAGetFCPhyAttributesFunc GetFCPhyAttributesHandler; 155*9e86db79SHyon Kim SMHBAGetSASPhyAttributesFunc GetSASPhyAttributesHandler; 156*9e86db79SHyon Kim SMHBAGetProtocolStatisticsFunc GetProtocolStatisticsHandler; 157*9e86db79SHyon Kim SMHBAGetPhyStatisticsFunc GetPhyStatisticsHandler; 158*9e86db79SHyon Kim HBASendCTPassThruV2Func SendCTPassThruV2Handler; 159*9e86db79SHyon Kim HBASetRNIDMgmtInfoFunc SetRNIDMgmtInfoHandler; 160*9e86db79SHyon Kim HBAGetRNIDMgmtInfoFunc GetRNIDMgmtInfoHandler; 161*9e86db79SHyon Kim HBASendRNIDV2Func SendRNIDV2Handler; 162*9e86db79SHyon Kim HBASendRPLFunc SendRPLHandler; 163*9e86db79SHyon Kim HBASendRPSFunc SendRPSHandler; 164*9e86db79SHyon Kim HBASendSRLFunc SendSRLHandler; 165*9e86db79SHyon Kim HBASendLIRRFunc SendLIRRHandler; 166*9e86db79SHyon Kim HBASendRLSFunc SendRLSHandler; 167*9e86db79SHyon Kim SMHBASendTESTFunc SendTESTHandler; 168*9e86db79SHyon Kim SMHBASendECHOFunc SendECHOHandler; 169*9e86db79SHyon Kim SMHBASendSMPPassThruFunc SendSMPPassThruHandler; 170*9e86db79SHyon Kim SMHBAGetBindingCapabilityFunc GetBindingCapabilityHandler; 171*9e86db79SHyon Kim SMHBAGetBindingSupportFunc GetBindingSupportHandler; 172*9e86db79SHyon Kim SMHBASetBindingSupportFunc SetBindingSupportHandler; 173*9e86db79SHyon Kim SMHBAGetTargetMappingFunc GetTargetMappingHandler; 174*9e86db79SHyon Kim SMHBAGetPersistentBindingFunc GetPersistentBindingHandler; 175*9e86db79SHyon Kim SMHBASetPersistentBindingFunc SetPersistentBindingHandler; 176*9e86db79SHyon Kim SMHBARemovePersistentBindingFunc RemovePersistentBindingHandler; 177*9e86db79SHyon Kim SMHBARemoveAllPersistentBindingsFunc 178*9e86db79SHyon Kim RemoveAllPersistentBindingsHandler; 179*9e86db79SHyon Kim SMHBAGetLUNStatisticsFunc GetLUNStatisticsHandler; 180*9e86db79SHyon Kim SMHBAScsiInquiryFunc ScsiInquiryHandler; 181*9e86db79SHyon Kim SMHBAScsiReportLUNsFunc ScsiReportLUNsHandler; 182*9e86db79SHyon Kim SMHBAScsiReadCapacityFunc ScsiReadCapacityHandler; 183*9e86db79SHyon Kim SMHBARegisterForAdapterAddEventsFunc 184*9e86db79SHyon Kim RegisterForAdapterAddEventsHandler; 185*9e86db79SHyon Kim SMHBARegisterForAdapterEventsFunc RegisterForAdapterEventsHandler; 186*9e86db79SHyon Kim SMHBARegisterForAdapterPortEventsFunc 187*9e86db79SHyon Kim RegisterForAdapterPortEventsHandler; 188*9e86db79SHyon Kim SMHBARegisterForAdapterPortStatEventsFunc 189*9e86db79SHyon Kim RegisterForAdapterPortStatEventsHandler; 190*9e86db79SHyon Kim SMHBARegisterForAdapterPhyStatEventsFunc 191*9e86db79SHyon Kim RegisterForAdapterPhyStatEventsHandler; 192*9e86db79SHyon Kim SMHBARegisterForTargetEventsFunc RegisterForTargetEventsHandler; 193*9e86db79SHyon Kim HBARegisterForLinkEventsFunc RegisterForLinkEventsHandler; 194*9e86db79SHyon Kim HBARemoveCallbackFunc RemoveCallbackHandler; 195*9e86db79SHyon Kim } SMHBA_ENTRYPOINTS, *PSMHBA_ENTRYPOINTS; 196*9e86db79SHyon Kim 197*9e86db79SHyon Kim typedef HBA_UINT32 (* SMHBARegisterLibraryFunc)(SMHBA_ENTRYPOINTS *); 198*9e86db79SHyon Kim 199*9e86db79SHyon Kim HBA_STATUS SMHBA_RegisterLibrary( 200*9e86db79SHyon Kim SMHBA_ENTRYPOINTS *functionTable 201*9e86db79SHyon Kim ); 202*9e86db79SHyon Kim 203*9e86db79SHyon Kim #ifdef __cplusplus 204*9e86db79SHyon Kim } 205*9e86db79SHyon Kim #endif 206*9e86db79SHyon Kim 207*9e86db79SHyon Kim #endif /* _VENDORSMHBAAPI_H_ */ 208