|
Packit Service |
35c908 |
/*
|
|
Packit Service |
35c908 |
* Copyright (c) 2008, Intel Corporation.
|
|
Packit Service |
35c908 |
*
|
|
Packit Service |
35c908 |
* This program is free software; you can redistribute it and/or modify it
|
|
Packit Service |
35c908 |
* under the terms and conditions of the GNU Lesser General Public License,
|
|
Packit Service |
35c908 |
* version 2.1, as published by the Free Software Foundation.
|
|
Packit Service |
35c908 |
*
|
|
Packit Service |
35c908 |
* This program is distributed in the hope it will be useful, but WITHOUT
|
|
Packit Service |
35c908 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
Packit Service |
35c908 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
|
Packit Service |
35c908 |
* for more details.
|
|
Packit Service |
35c908 |
*
|
|
Packit Service |
35c908 |
* You should have received a copy of the GNU Lesser General Public License
|
|
Packit Service |
35c908 |
* along with this program; if not, write to the Free Software Foundation, Inc.,
|
|
Packit Service |
35c908 |
* 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
|
Packit Service |
35c908 |
*
|
|
Packit Service |
35c908 |
*/
|
|
Packit Service |
35c908 |
|
|
Packit Service |
35c908 |
#define _XOPEN_SOURCE 500 /* for strptime() */
|
|
Packit Service |
35c908 |
#include "utils.h"
|
|
Packit Service |
35c908 |
#include "api_lib.h"
|
|
Packit Service |
35c908 |
#include "adapt_impl.h"
|
|
Packit Service |
35c908 |
#include "bind_impl.h"
|
|
Packit Service |
35c908 |
|
|
Packit Service |
35c908 |
/**
|
|
Packit Service |
35c908 |
* Return the version of the SNIA HBA-API supported by this library.
|
|
Packit Service |
35c908 |
*/
|
|
Packit Service |
35c908 |
static HBA_UINT32 get_library_version()
|
|
Packit Service |
35c908 |
{
|
|
Packit Service |
35c908 |
return HBA_LIBVERSION;
|
|
Packit Service |
35c908 |
}
|
|
Packit Service |
35c908 |
|
|
Packit Service |
35c908 |
/*
|
|
Packit Service |
35c908 |
* When HBA_GetVendorLibraryAttributes() is called,
|
|
Packit Service |
35c908 |
* it does not dispatch to the library entry point at
|
|
Packit Service |
35c908 |
* .GetVendorLibraryAttributesHandler. Thus this
|
|
Packit Service |
35c908 |
* routine can never be entered. -[sma]
|
|
Packit Service |
35c908 |
*/
|
|
Packit Service |
35c908 |
#if 0
|
|
Packit Service |
35c908 |
/**
|
|
Packit Service |
35c908 |
* Get the library attributes.
|
|
Packit Service |
35c908 |
* @param ap library attributes pointer.
|
|
Packit Service |
35c908 |
* @returns 0 or error code.
|
|
Packit Service |
35c908 |
*/
|
|
Packit Service |
35c908 |
static HBA_STATUS get_vendor_lib_attrs(HBA_LIBRARYATTRIBUTES *ap)
|
|
Packit Service |
35c908 |
{
|
|
Packit Service |
35c908 |
memset(ap, 0, sizeof(*ap));
|
|
Packit Service |
35c908 |
if (strptime(BUILD_DATE, "%Y/%m/%d %T %Z", &ap->build_date) == NULL)
|
|
Packit Service |
35c908 |
memset(&ap->build_date, 0, sizeof(ap->build_date));
|
|
Packit Service |
35c908 |
strcpy(ap->VName, HBA_API_VENDOR);
|
|
Packit Service |
35c908 |
strcpy(ap->VVersion, HBA_API_VERSION);
|
|
Packit Service |
35c908 |
return HBA_STATUS_OK;
|
|
Packit Service |
35c908 |
}
|
|
Packit Service |
35c908 |
#endif
|
|
Packit Service |
35c908 |
|
|
Packit Service |
35c908 |
/*
|
|
Packit Service |
35c908 |
* initialize the library after load.
|
|
Packit Service |
35c908 |
*/
|
|
Packit Service |
35c908 |
static HBA_STATUS load_library(void)
|
|
Packit Service |
35c908 |
{
|
|
Packit Service |
35c908 |
adapter_init();
|
|
Packit Service |
35c908 |
return HBA_STATUS_OK;
|
|
Packit Service |
35c908 |
}
|
|
Packit Service |
35c908 |
|
|
Packit Service |
35c908 |
static HBA_STATUS free_library(void)
|
|
Packit Service |
35c908 |
{
|
|
Packit Service |
35c908 |
adapter_shutdown();
|
|
Packit Service |
35c908 |
adapter_destroy_all();
|
|
Packit Service |
35c908 |
return HBA_STATUS_OK;
|
|
Packit Service |
35c908 |
}
|
|
Packit Service |
35c908 |
|
|
Packit Service |
35c908 |
static HBA_ENTRYPOINTSV2 vendor_lib_entrypoints = {
|
|
Packit Service |
35c908 |
.GetVersionHandler = get_library_version,
|
|
Packit Service |
35c908 |
.LoadLibraryHandler = load_library,
|
|
Packit Service |
35c908 |
.FreeLibraryHandler = free_library,
|
|
Packit Service |
35c908 |
.GetNumberOfAdaptersHandler = adapter_get_count,
|
|
Packit Service |
35c908 |
.GetAdapterNameHandler = adapter_get_name,
|
|
Packit Service |
35c908 |
.OpenAdapterHandler = adapter_open,
|
|
Packit Service |
35c908 |
.CloseAdapterHandler = adapter_close,
|
|
Packit Service |
35c908 |
.GetAdapterAttributesHandler = adapter_get_attr,
|
|
Packit Service |
35c908 |
.GetAdapterPortAttributesHandler = adapter_get_port_attr,
|
|
Packit Service |
35c908 |
.GetPortStatisticsHandler = get_port_statistics,
|
|
Packit Service |
35c908 |
.GetDiscoveredPortAttributesHandler = adapter_get_rport_attr,
|
|
Packit Service |
35c908 |
|
|
Packit Service |
35c908 |
.GetPortAttributesByWWNHandler = NULL,
|
|
Packit Service |
35c908 |
/* adapter_get_port_attr_by_wwn, */
|
|
Packit Service |
35c908 |
/* Next function deprecated but still supported */
|
|
Packit Service |
35c908 |
.SendCTPassThruHandler = NULL,
|
|
Packit Service |
35c908 |
.RefreshInformationHandler = NULL,
|
|
Packit Service |
35c908 |
.ResetStatisticsHandler = NULL,
|
|
Packit Service |
35c908 |
/* Next function deprecated but still supported */
|
|
Packit Service |
35c908 |
.GetFcpTargetMappingHandler = get_binding_target_mapping_v1,
|
|
Packit Service |
35c908 |
/* Next function depricated but still supported */
|
|
Packit Service |
35c908 |
.GetFcpPersistentBindingHandler = NULL,
|
|
Packit Service |
35c908 |
.GetEventBufferHandler = NULL,
|
|
Packit Service |
35c908 |
.SetRNIDMgmtInfoHandler = NULL,
|
|
Packit Service |
35c908 |
.GetRNIDMgmtInfoHandler = NULL,
|
|
Packit Service |
35c908 |
/* Next function deprecated but still supported */
|
|
Packit Service |
35c908 |
.SendRNIDHandler = NULL,
|
|
Packit Service |
35c908 |
.ScsiInquiryHandler = scsi_inquiry_v1,
|
|
Packit Service |
35c908 |
.ReportLUNsHandler = scsi_report_luns_v1,
|
|
Packit Service |
35c908 |
.ReadCapacityHandler = scsi_read_capacity_v1,
|
|
Packit Service |
35c908 |
|
|
Packit Service |
35c908 |
/* V2 handlers */
|
|
Packit Service |
35c908 |
.OpenAdapterByWWNHandler = NULL,
|
|
Packit Service |
35c908 |
/* adapter_open_by_wwn, */
|
|
Packit Service |
35c908 |
.GetFcpTargetMappingV2Handler = get_binding_target_mapping_v2,
|
|
Packit Service |
35c908 |
.SendCTPassThruV2Handler = NULL,
|
|
Packit Service |
35c908 |
.RefreshAdapterConfigurationHandler = NULL,
|
|
Packit Service |
35c908 |
.GetBindingCapabilityHandler = NULL,
|
|
Packit Service |
35c908 |
/* get_binding_capability, */
|
|
Packit Service |
35c908 |
.GetBindingSupportHandler = NULL,
|
|
Packit Service |
35c908 |
/* get_binding_support, */
|
|
Packit Service |
35c908 |
.SetBindingSupportHandler = NULL,
|
|
Packit Service |
35c908 |
/* set_binding_support, */
|
|
Packit Service |
35c908 |
.SetPersistentBindingV2Handler = NULL,
|
|
Packit Service |
35c908 |
.GetPersistentBindingV2Handler = NULL,
|
|
Packit Service |
35c908 |
.RemovePersistentBindingHandler = NULL,
|
|
Packit Service |
35c908 |
.RemoveAllPersistentBindingsHandler = NULL,
|
|
Packit Service |
35c908 |
.SendRNIDV2Handler = NULL,
|
|
Packit Service |
35c908 |
.ScsiInquiryV2Handler = scsi_inquiry_v2,
|
|
Packit Service |
35c908 |
.ScsiReportLUNsV2Handler = scsi_report_luns_v2,
|
|
Packit Service |
35c908 |
.ScsiReadCapacityV2Handler = scsi_read_capacity_v2,
|
|
Packit Service |
35c908 |
.GetVendorLibraryAttributesHandler = NULL,
|
|
Packit Service |
35c908 |
/* get_vendor_lib_attrs, */
|
|
Packit Service |
35c908 |
.RemoveCallbackHandler = NULL,
|
|
Packit Service |
35c908 |
.RegisterForAdapterAddEventsHandler = NULL,
|
|
Packit Service |
35c908 |
.RegisterForAdapterEventsHandler = NULL,
|
|
Packit Service |
35c908 |
.RegisterForAdapterPortEventsHandler = NULL,
|
|
Packit Service |
35c908 |
.RegisterForAdapterPortStatEventsHandler = NULL,
|
|
Packit Service |
35c908 |
.RegisterForTargetEventsHandler = NULL,
|
|
Packit Service |
35c908 |
.RegisterForLinkEventsHandler = NULL,
|
|
Packit Service |
35c908 |
.SendRPLHandler = NULL,
|
|
Packit Service |
35c908 |
.SendRPSHandler = NULL,
|
|
Packit Service |
35c908 |
.SendSRLHandler = NULL,
|
|
Packit Service |
35c908 |
.SendLIRRHandler = NULL,
|
|
Packit Service |
35c908 |
.GetFC4StatisticsHandler = get_port_fc4_statistics,
|
|
Packit Service |
35c908 |
.GetFCPStatisticsHandler = NULL,
|
|
Packit Service |
35c908 |
.SendRLSHandler = NULL,
|
|
Packit Service |
35c908 |
};
|
|
Packit Service |
35c908 |
|
|
Packit Service |
35c908 |
/**
|
|
Packit Service |
35c908 |
* Function called by a version 1 common HBAAPI library to get our entry points.
|
|
Packit Service |
35c908 |
*
|
|
Packit Service |
35c908 |
* @arg ep pointer to entrypoints structure where we store our
|
|
Packit Service |
35c908 |
* function pointers.
|
|
Packit Service |
35c908 |
* @returns HBA_STATUS.
|
|
Packit Service |
35c908 |
*/
|
|
Packit Service |
35c908 |
HBA_STATUS HBA_RegisterLibrary(HBA_ENTRYPOINTS *ep)
|
|
Packit Service |
35c908 |
{
|
|
Packit Service |
35c908 |
memcpy(ep, &vendor_lib_entrypoints, sizeof(HBA_ENTRYPOINTS));
|
|
Packit Service |
35c908 |
return HBA_STATUS_OK;
|
|
Packit Service |
35c908 |
}
|
|
Packit Service |
35c908 |
|
|
Packit Service |
35c908 |
/**
|
|
Packit Service |
35c908 |
* Function called by the common HBAAPI library to get our entry points.
|
|
Packit Service |
35c908 |
*
|
|
Packit Service |
35c908 |
* @arg ep pointer to entrypoints structure where we store our
|
|
Packit Service |
35c908 |
* function pointers.
|
|
Packit Service |
35c908 |
* @returns HBA_STATUS.
|
|
Packit Service |
35c908 |
*/
|
|
Packit Service |
35c908 |
HBA_STATUS HBA_RegisterLibraryV2(HBA_ENTRYPOINTSV2 *ep)
|
|
Packit Service |
35c908 |
{
|
|
Packit Service |
35c908 |
*ep = vendor_lib_entrypoints; /* structure copy */
|
|
Packit Service |
35c908 |
return HBA_STATUS_OK;
|
|
Packit Service |
35c908 |
}
|
|
Packit Service |
35c908 |
|