Functions | |
HBA_UINT32 | HBA_GetVersion (void) |
Return the version of the HBA API specification with which this library is compliant. | |
HBA_STATUS | HBA_LoadLibrary (void) |
Perform initialization of library. | |
HBA_STATUS | HBA_FreeLibrary (void) |
Free system resources that library has used. | |
HBA_UINT32 | HBA_GetWrapperLibraryAttributes (HBA_LIBRARYATTRIBUTES *attributes) |
Return attributes of the OS specific HBA API library. | |
HBA_UINT32 | HBA_GetVendorLibraryAttributes (HBA_UINT32 adapter_index, HBA_LIBRARYATTRIBUTES *attributes) |
Return attributes of the vendor specific HBA API library. | |
HBA_UINT32 | HBA_GetNumberOfAdapters (void) |
Return number of adapters. | |
void | HBA_RefreshInformation (HBA_HANDLE handle) |
Refresh information of an adapter. | |
void | HBA_RefreshAdapterConfiguration (void) |
Refresh information about configured adapters. | |
void | HBA_ResetStatistics (HBA_HANDLE handle, HBA_UINT32 portindex) |
According to FC-HBA this function is obsolete. | |
HBA_STATUS | HBA_GetAdapterName (HBA_UINT32 adapterindex, char *pAdaptername) |
Return name that identifies an adapter. | |
HBA_HANDLE | HBA_OpenAdapter (char *pAdaptername) |
Open an adapter. | |
void | HBA_CloseAdapter (HBA_HANDLE handle) |
Close an open adapter. | |
HBA_STATUS | HBA_GetAdapterAttributes (HBA_HANDLE handle, HBA_ADAPTERATTRIBUTES *pAdapterattributes) |
Return attributes for an adapter. | |
HBA_STATUS | HBA_GetAdapterPortAttributes (HBA_HANDLE handle, HBA_UINT32 portindex, HBA_PORTATTRIBUTES *pPortattributes) |
Return attributes for an adapter port. | |
HBA_STATUS | HBA_GetDiscoveredPortAttributes (HBA_HANDLE handle, HBA_UINT32 portindex, HBA_UINT32 discoveredportindex, HBA_PORTATTRIBUTES *pPortattributes) |
Return attributes of an discovered port. | |
HBA_STATUS | HBA_GetPortStatistics (HBA_HANDLE handle, HBA_UINT32 portindex, HBA_PORTSTATISTICS *pPortstatistics) |
Return statistics of an adapter port. | |
HBA_STATUS | HBA_GetFcpTargetMapping (HBA_HANDLE handle, HBA_FCPTARGETMAPPING *pMapping) |
Retrieve mappings between OS SCSI targets/units and FCP targets/units. | |
HBA_STATUS | HBA_GetFcpTargetMappingV2 (HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_FCPTARGETMAPPINGV2 *pMappingV2) |
Retrieve mappings between OS SCSI targets/units and FCP targets/units. | |
HBA_STATUS | HBA_SendScsiInquiry (HBA_HANDLE handle, HBA_WWN PortWWN, HBA_UINT64 fcLUN, HBA_UINT8 EVPD, HBA_UINT32 PageCode, void *pRspBuffer, HBA_UINT32 RspBufferSize, void *pSenseBuffer, HBA_UINT32 SenseBufferSize) |
Send a SCSI INQUIRY command to a FCP LUN. | |
HBA_STATUS | HBA_SendReportLUNs (HBA_HANDLE handle, HBA_WWN portWWN, void *pRspBuffer, HBA_UINT32 RspBufferSize, void *pSenseBuffer, HBA_UINT32 SenseBufferSize) |
Send a SCSI REPORT LUNS command to a target. | |
HBA_STATUS | HBA_ScsiReportLUNsV2 (HBA_HANDLE handle, HBA_WWN hbaPortWWN, HBA_WWN discoveredPortWWN, void *pRspBuffer, HBA_UINT32 *pRspBufferSize, HBA_UINT8 *pScsiStatus, void *pSenseBuffer, HBA_UINT32 *pSenseBufferSize) |
Send a SCSI REPORT LUNS command to a target. |
void HBA_CloseAdapter | ( | HBA_HANDLE | handle | ) |
Close an open adapter.
handle | of adapter to be closed |
References doCloseAdapter(), getAdapterByHandle(), VLIB_MUTEX_LOCK, and VLIB_MUTEX_UNLOCK.
HBA_STATUS HBA_FreeLibrary | ( | void | ) |
Free system resources that library has used.
References closeAllAdapters(), VLIB_MUTEX_LOCK, and VLIB_MUTEX_UNLOCK.
HBA_STATUS HBA_GetAdapterAttributes | ( | HBA_HANDLE | handle, | |
HBA_ADAPTERATTRIBUTES * | pAdapterattributes | |||
) |
Return attributes for an adapter.
handle | of an opened adapter | |
pAdapterattributes | pointer to return atributes |
References getAdapterByHandle(), revalidateRepository(), sysfs_getAdapterAttributes(), VLIB_MUTEX_LOCK, and VLIB_MUTEX_UNLOCK.
HBA_STATUS HBA_GetAdapterName | ( | HBA_UINT32 | adapterindex, | |
char * | pAdaptername | |||
) |
Return name that identifies an adapter.
adapterindex | index of the HBA | |
pAdaptername | used to return the ASCII string |
References getAdapterByIndex(), vlib_adapter::isInvalid, revalidateRepository(), VLIB_ADAPTERNAME_LEN, VLIB_ADAPTERNAME_PREFIX, VLIB_MUTEX_LOCK, and VLIB_MUTEX_UNLOCK.
HBA_STATUS HBA_GetAdapterPortAttributes | ( | HBA_HANDLE | handle, | |
HBA_UINT32 | portindex, | |||
HBA_PORTATTRIBUTES * | pPortattributes | |||
) |
Return attributes for an adapter port.
handle | to an opened adapter | |
portindex | index of adapter port | |
pPortattributes | pointer to return atributes |
Additionally this function triggers creation of port configuration for this adapter (see revalidatePorts()).
ZFCP HBA API does not set the port attributes FabricName, OSDeviceName and PortSymbolicName for an adapter port.
References getAdapterByHandle(), revalidatePorts(), revalidateRepository(), sysfs_getAdapterPortAttributes(), VLIB_MUTEX_LOCK, and VLIB_MUTEX_UNLOCK.
HBA_STATUS HBA_GetDiscoveredPortAttributes | ( | HBA_HANDLE | handle, | |
HBA_UINT32 | portindex, | |||
HBA_UINT32 | discoveredportindex, | |||
HBA_PORTATTRIBUTES * | pPortattributes | |||
) |
Return attributes of an discovered port.
handle | to an opened adapter | |
portindex | index of adapter port | |
discoveredportindex | index of adapter port | |
pPortattributes | pointer to return atributes |
For discovered ports ZFCP HBA API does not set the port attributes OSDeviceName, PortMaxFrameSize and PortSupportedFc4Types. PortSupportedSpeed, PortSpeed, and PortState are set to values indicating unknwon. NumberofDiscoveredPorts is 0. Most other values are determined using a GA_NXT request on the Name Server Directory Service.
For PortSupportedFc4Types and PortActive Fc4Types we do not follow FC-HBA Rev 10. We do not store them "little-endian" but "big-endian" as it is suggested by Editors Note 1.
References getAdapterByHandle(), getPortByIndex(), vlib_port::isInvalid, revalidateRepository(), sysfs_getDiscoveredPortAttributes(), VLIB_MUTEX_LOCK, and VLIB_MUTEX_UNLOCK.
HBA_STATUS HBA_GetFcpTargetMapping | ( | HBA_HANDLE | handle, | |
HBA_FCPTARGETMAPPING * | pMapping | |||
) |
Retrieve mappings between OS SCSI targets/units and FCP targets/units.
handle | to an opened adapter | |
*pMapping | pointer to return target mappings |
Additionally this function triggers creation of unit configuration for this adapter (see revalidateUnits()).
References vlib_unit::channel, vlib_port::did, vlib_unit::fcLun, getAdapterByHandle(), getPortByIndex(), getUnitByIndex(), vlib_unit::isInvalid, vlib_port::isInvalid, vlib_unit::lun, vlib_adapter::ports, revalidatePorts(), revalidateRepository(), revalidateUnits(), vlib_unit::target, vlib_port::units, block::used, vlib_FCID_to_hbaFCID(), VLIB_MUTEX_LOCK, VLIB_MUTEX_UNLOCK, vlib_wwn_to_HBA_WWN(), vlib_port::wwnn, and vlib_port::wwpn.
Referenced by HBA_GetFcpTargetMappingV2().
HBA_STATUS HBA_GetFcpTargetMappingV2 | ( | HBA_HANDLE | handle, | |
HBA_WWN | hbaPortWWN, | |||
HBA_FCPTARGETMAPPINGV2 * | pMappingV2 | |||
) |
Retrieve mappings between OS SCSI targets/units and FCP targets/units.
handle | to an opened adapter | |
*pMapping | pointer to return target mappings | |
*hbaPortWWN | wwpn to identify the port on the adapter |
Our "adapters" have only one port, so the WWN parameter is superfluous. We only check if it matches to the adapter handle, if yes, we call HBA_GetFcpTargetMapping
References getAdapterByHandle(), HBA_GetFcpTargetMapping(), vlib_adapter::ident, vlib_HBA_WWN_to_wwn(), VLIB_MUTEX_LOCK, VLIB_MUTEX_UNLOCK, and vlib_adapter_ident::wwpn.
HBA_UINT32 HBA_GetNumberOfAdapters | ( | void | ) |
Return number of adapters.
References revalidateRepository(), VLIB_MUTEX_LOCK, and VLIB_MUTEX_UNLOCK.
HBA_STATUS HBA_GetPortStatistics | ( | HBA_HANDLE | handle, | |
HBA_UINT32 | portindex, | |||
HBA_PORTSTATISTICS * | pPortstatistics | |||
) |
Return statistics of an adapter port.
handle | to an opened adapter | |
portindex | index of adapter port | |
pPortstatistics | pointer to return statistics |
References getAdapterByHandle(), revalidateRepository(), sysfs_getPortStatistics(), VLIB_MUTEX_LOCK, and VLIB_MUTEX_UNLOCK.
HBA_UINT32 HBA_GetVendorLibraryAttributes | ( | HBA_UINT32 | adapter_index, | |
HBA_LIBRARYATTRIBUTES * | attributes | |||
) |
Return attributes of the vendor specific HBA API library.
adapter_index | not used | |
attributes | used to return library attributes |
The index of the HBA is ignored, because it is of use only for a wrapper library.
References _GetVendorLibraryAttributes().
HBA_UINT32 HBA_GetVersion | ( | void | ) |
Return the version of the HBA API specification with which this library is compliant.
References HBAAPI_LIBRARY_VERSION.
HBA_UINT32 HBA_GetWrapperLibraryAttributes | ( | HBA_LIBRARYATTRIBUTES * | attributes | ) |
Return attributes of the OS specific HBA API library.
attributes | used to return library attributes |
References _GetVendorLibraryAttributes().
HBA_STATUS HBA_LoadLibrary | ( | void | ) |
Perform initialization of library.
References sysfs_createAndReadConfigAdapter(), VLIB_MUTEX_LOCK, and VLIB_MUTEX_UNLOCK.
HBA_HANDLE HBA_OpenAdapter | ( | char * | pAdaptername | ) |
Open an adapter.
pAdaptername | name of adapter to be opened (name was obtained by previous call to HBA_GetAdapterName()) |
References findIndexByName(), vlib_adapter::handle, openAdapterByIndex(), revalidateRepository(), VLIB_INVALID_HANDLE, VLIB_MUTEX_LOCK, and VLIB_MUTEX_UNLOCK.
void HBA_RefreshAdapterConfiguration | ( | void | ) |
Refresh information about configured adapters.
References revalidateRepository(), VLIB_MUTEX_LOCK, and VLIB_MUTEX_UNLOCK.
void HBA_RefreshInformation | ( | HBA_HANDLE | handle | ) |
Refresh information of an adapter.
handle | of the adapter for which information should be refreshed. |
References getAdapterByHandle(), updateAdapter(), VLIB_LOG, VLIB_MUTEX_LOCK, and VLIB_MUTEX_UNLOCK.
void HBA_ResetStatistics | ( | HBA_HANDLE | handle, | |
HBA_UINT32 | portindex | |||
) |
According to FC-HBA this function is obsolete.
This function has no effect.
HBA_STATUS HBA_ScsiReportLUNsV2 | ( | HBA_HANDLE | handle, | |
HBA_WWN | hbaPortWWN, | |||
HBA_WWN | discoveredPortWWN, | |||
void * | pRspBuffer, | |||
HBA_UINT32 * | pRspBufferSize, | |||
HBA_UINT8 * | pScsiStatus, | |||
void * | pSenseBuffer, | |||
HBA_UINT32 * | pSenseBufferSize | |||
) |
Send a SCSI REPORT LUNS command to a target.
handle | to an opened adapter | |
portWWN | WWPN of the local port | |
discoveredPortWWN | WWPN of the target port | |
*pRspBuffer | pointer to return response data | |
*RspBufferSize | pointer to size of the response buffer | |
*pSenseBuffer | pointer to return sense data on SCSI CHECK_CONDITION | |
*SenseBufferSize | pointer to size of the sense buffer |
References HBA_SendReportLUNs().
HBA_STATUS HBA_SendReportLUNs | ( | HBA_HANDLE | handle, | |
HBA_WWN | portWWN, | |||
void * | pRspBuffer, | |||
HBA_UINT32 | RspBufferSize, | |||
void * | pSenseBuffer, | |||
HBA_UINT32 | SenseBufferSize | |||
) |
Send a SCSI REPORT LUNS command to a target.
handle | to an opened adapter | |
portWWN | WWPN of the target port | |
*pRspBuffer | pointer to return response data | |
RspBufferSize | size of the response buffer | |
*pSenseBuffer | pointer to return sense data on SCSI CHECK_CONDITION | |
SenseBufferSize | size of the sense buffer |
References detachWLUN(), getAdapterByHandle(), getAttachedWLUN(), getPortByWWPN(), getSgDevFromPort(), vlib_HBA_WWN_to_wwn(), VLIB_MUTEX_LOCK, and VLIB_MUTEX_UNLOCK.
Referenced by HBA_ScsiReportLUNsV2().
HBA_STATUS HBA_SendScsiInquiry | ( | HBA_HANDLE | handle, | |
HBA_WWN | PortWWN, | |||
HBA_UINT64 | fcLUN, | |||
HBA_UINT8 | EVPD, | |||
HBA_UINT32 | PageCode, | |||
void * | pRspBuffer, | |||
HBA_UINT32 | RspBufferSize, | |||
void * | pSenseBuffer, | |||
HBA_UINT32 | SenseBufferSize | |||
) |
Send a SCSI INQUIRY command to a FCP LUN.
handle | to an opened adapter | |
PortWWN | WWPN of the target port | |
fcLUN | FCP LUN of the unit | |
EVPD | Enhanced Vital Product Data | |
PageCode | Vital Product Data page code if EVPD is set | |
*pRspBuffer | pointer to return response data | |
RspBufferSize | size of the response buffer | |
*pSenseBuffer | pointer to return sense data on SCSI CHECK_CONDITION | |
SenseBufferSize | size of the sense buffer |
ZFCP HBA API sends INQUIRY as untagged if the unit is not previously registered at the mid layer. If the device is already registered there, untagged/tagged is chosen as indicated in the associated Scsi_Device structure of the unit.
References getAdapterByHandle(), getPortByWWPN(), getUnitByFcLun(), vlib_unit::sg_dev, vlib_HBA_WWN_to_wwn(), VLIB_MUTEX_LOCK, and VLIB_MUTEX_UNLOCK.