Common Fibre Channel HBA Information Library Functions
HBA_SendScsiInquiry(3HBAAPI)
NAME
HBA_SendScsiInquiry, HBA_ScsiInquiryV2, HBA_SendReportLUNs,
HBA_ScsiReportLUNsV2, HBA_SendReadCapacity,
HBA_ScsiReadCapacityV2 - gather SCSI information from
discovered portsSYNOPSIS
cc [ flag... ] file... -lHBAAPI [ library... ]
#include
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);
HBA_STATUS HBA_ScsiInquiryV2(HBA_HANDLE handle, HBA_WWN hbaPortWWN,
HBA_WWN discoveredPortWWN, HBA_UINT64 fcLUN, HBA_UINT8 CDB_BYTE1,
HBA_UINT8 CDB_BYTE2, void *pRspBuffer, HBA_UINT32 *pRspBufferSize,
HBA_UINT8 *pScsiStatus, void *pSenseBuffer,
HBA_UINT32 *pSenseBufferSize);
HBA_STATUS HBA_SendReportLUNs(HBA_HANDLE handle, HBA_WWN PortWWN,
void *pRspBuffer, HBA_UINT32 RspBufferSize,
void *pSenseBuffer, HBA_UINT32 SenseBufferSize);
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);
HBA_STATUS HBA_SendReadCapacity(HBA_HANDLE handle, HBA_WWN PortWWN,
HBA_UINT64 fcLUN, void *pRspBuffer, HBA_UINT32 RspBufferSize,
void *pSenseBuffer, HBA_UINT32 SenseBufferSize);
HBA_STATUS HBA_ScsiReadCapacityV2(HBA_HANDLE handle
HBA_WWN hbaPortWWN, HBA_WWN discoveredPortWWN,
HBA_UINT64 fcLUN, void *pRspBuffer, HBA_UINT32 *pRspBufferSize,
HBA_UINT8 *pScsiStatus, void *pSenseBuffer,
HBA_UINT32 *pSenseBufferSize);
PARAMETERS
handlean open handle returned from HBA_OpenAdapter(3HBAAPI)
SunOS 5.11 Last change: 1 Sep 2003 1
Common Fibre Channel HBA Information Library FunctionsHBA_SendScsiInquiry(3HBAAPI)
PortWWN the port WWN of the discovered remote device to which the command is sent hbaPortWWNHBA_ScsiInquiryV2()
the Port WWN of the local HBA through which the SCSI INQUIRY command is issuedHBA_ScsiReportLUNsV2()
the Port WWN of the local HBA through which the SCSI REPORT LUNS command is issuedHBA_ScsiReadCapacityV2()
the Port WWN of a local HBA through which the SCSI READ CAPACITY command is issued discoveredPortWWNHBA_ScsiInquiryV2() the Remote Port WWN to which
the SCSI INQUIRY command is being sentHBA_ScsiReportLUNsV2() the Remote Port WWN to which
the SCSI REPORT LUNS command is sentHBA_ScsiReadCapacityV2() the Remote Port WWN to which
the SCSI READ CAPACITY com-
mand is sent fcLUNthe FCP LUN as defined in the T10 specification SAM-2 to
which the command is sentSunOS 5.11 Last change: 1 Sep 2003 2
Common Fibre Channel HBA Information Library FunctionsHBA_SendScsiInquiry(3HBAAPI)
EVPD If set to 0, indicates a Standard Inquiry should be returned. If set to 1, indicates Vital Product Data should be returned. PageCodeIf EVPD is set to 1, PageCode indicates which Vital Pro-
duct Data page should be returned.CDB_Byte1
the second byte of the CDB for the SCSI INQUIRY commandCDB_Byte2
the third byte of the CDB for the SCSI INQUIRY command pRspBuffer a buffer in which to store the response payload RspBufferSize the size of the response buffer pRspBufferSize a pointer to the size of the response buffer pScsiStatus a buffer to receive SCSI sense data pSenseBuffer a buffer in which to store any SCSI sense data SenseBufferSize the size of the sense bufferSunOS 5.11 Last change: 1 Sep 2003 3
Common Fibre Channel HBA Information Library FunctionsHBA_SendScsiInquiry(3HBAAPI)
pSenseBufferSize a pointer to the size of the sense bufferDESCRIPTION
The HBA_SendScsiInquiry() and HBA_SendScsiInquiryV2() func-
tions send a SCSI Inquiry command as defined in the T10specification SPC-2 to a remote FCP port.
The HBA_SendReportLUNs() and HBA_SendReportLUNsV2() func-
tions send a SCSI Report LUNs command as defined in the T10specification SPC-2 to a remote FCP port.
The HBA_SendReadCapacity() and HBA_SendReadCapacityV2()
functions end a SCSI Read Capacity command as defined in theT10 specification SBC-2 to a remote FCP port.
RETURN VALUES
The HBA_SendScsiInquiry() function returns the following
value:HBA_STATUS_OK
The command has completed. Success or failure should be determined by verifying that the sense data does notcontain a check-condition. If a check-condition is
present, the content of pRspBuffer is undefined.The HBA_ScsiInquiryV2() function returns the following
values:HBA_STATUS_OK
The command has completed. The complete payload of the SCSI INQUIRY command is returned in pRspBuffer.HBA_STATUS_ERROR_ILLEGAL_WWN
The port WWN hbaPortWWN is not a WWN contained by the HBA specified by handle.HBA_STATUS_ERROR_NOT_A_TARGET
The identified remote Port does not have SCSI TargetSunOS 5.11 Last change: 1 Sep 2003 4
Common Fibre Channel HBA Information Library FunctionsHBA_SendScsiInquiry(3HBAAPI)
functionality.HBA_STATUS_ERROR_TARGET_BUSY
The command cannot be sent due to a SCSI overlapped com-
mand condition.HBA_STATUS_ERROR
An error occurred.The HBA_SendReportLUNs() function returns the following
values:HBA_STATUS_OK
The command has completed. Success or failure should be determined by verifying the sense data does not containa check-condition. If a check-condition is present, the
content of pRspBuffer is undefined.HBA_STATUS_SCSI_CHECK_CONDITION
The HBA detected a check-condition state. Details are
present in the pSenseBuffer payload. The content of pRspBuffer is undefined. Not all VSLs support this error condition. Other error values indicate the content of pRspBuffer is undefined. In some cases, the pSenseBuffer can contain sense data.The HBA_SendReportLUNsV2() function returns the following
values:HBA_STATUS_OK
The command has completed. Sense data must be verifiedto ensure that it does not contain a check-condition to
determine success. If a check-condition is present, the
content of pRspBuffer is undefined.SunOS 5.11 Last change: 1 Sep 2003 5
Common Fibre Channel HBA Information Library FunctionsHBA_SendScsiInquiry(3HBAAPI)
HBA_STATUS_ERROR_ILLEGAL_WWN
The port WWN hbaPortWWN is not a WWN contained by the HBA specified by handle.HBA_STATUS_ERROR_NOT_A_TARGET
The identified remote Port does not have SCSI Target functionality.HBA_STATUS_ERROR_TARGET_BUSY
The command cannot be sent due to a SCSI overlapped com-
mand condition.HBA_STATUS_ERROR
An error occurred.The HBA_SendReadCapacity() function returns the following
values:HBA_STATUS_OK
The command has completed. Success or failure should be determined by verifying that the sense data does notcontain a check-condition. If a check-condition is
present, the content of pRspBuffer is undefined.HBA_STATUS_SCSI_CHECK_CONDITION
The HBA detected a check-condition state. Details are
present in the pSenseBuffer payload. The content of pRspBuffer is undefined. Not all VSLs support this error condition. Other error values indicate the content of pRspBuffer is undefined. In some cases, the pSenseBuffer can contain sense data.The HBA_ScsiReadCapacityV2() function returns the following
values:SunOS 5.11 Last change: 1 Sep 2003 6
Common Fibre Channel HBA Information Library FunctionsHBA_SendScsiInquiry(3HBAAPI)
HBA_STATUS_OK
The command has completed. Sense data must be verifiedto ensure that it does not contain a check-condition to
determine success. If a check-condition is present, the
content of pRspBuffer is undefined.HBA_STATUS_ERROR_ILLEGAL_WWN
The port WWN hbaPortWWN is not a WWN contained by the HBA specified by handle.HBA_STATUS_ERROR_NOT_A_TARGET
The identified remote Port does not have SCSI Target functionality.HBA_STATUS_ERROR_TARGET_BUSY
The command cannot be sent due to a SCSI overlapped com-
mand condition.HBA_STATUS_ERROR
An error occurred. Other error values indicate the content of pRspBuffer is undefined. In some cases, the pSenseBuffer can contain sense data.ERRORS
See libhbaapi(3LIB) for general error status values.EXAMPLES
Example 1 Send a SCSI inquiry to the given discovered Target port WWN. The following example sends a SCSI inquiry to the given discovered Target port WWN. memset(&inq, 0, sizeof (inq)); memset(&sense, 0, sizeof (sense));if ((status = HBA_SendScsiInquiry(handle,
SunOS 5.11 Last change: 1 Sep 2003 7
Common Fibre Channel HBA Information Library FunctionsHBA_SendScsiInquiry(3HBAAPI)
discPortAttrs.PortWWN, 0, 0, 0, &inq, sizeof (inq), &sense, sizeof (sense))) !=HBA_STATUS_OK) {
fprintf(stderr, "Unable to send SCSI ""inquiry, reason %d\n", status);
continue; }printf(" Vendor: %.*s\n", 8, inq.inq_vid);
printf(" Model: %.*s\n", 16, inq.inq_pid);
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
| ____________________________|_____________________________|_
| Interface Stability | Committed || ____________________________|_____________________________|_
| | Standard: FC-HBA Version 4|
| | (API version 2) ||_____________________________|_____________________________|
| MT-Level | Safe |
|_____________________________|_____________________________|
| Standard | FC-MI 1.92 (API version 1) |
|_____________________________|_____________________________|
SEE ALSO
HBA_OpenAdapter(3HBAAPI), libhbaapi(3LIB), attributes(5)
T11 FC-MI Specification
BUGS
The HBA_SendScsiInquiry(), HBA_SendReportLUNs(), and
HBA_SendReadCapacity() functions do not take a portindex to
define through which port of a multi-ported HBA the command
should be sent. The behavior on multi-ported HBAs is
vendor-specific and can result in the command being sent
through the first HBA port, the first HBA port the givenPortWWN is connected to, or other vendor-specific behavior.
SNIA version 2 defines HBA_ScsiInquiryV2(),
HBA_ScsiReportLUNs(), and HBA_ScsiReadCapacity() to take a
Port WWN as an argument. This fixes the bug with multi-
ported HBAs in HBA_ScsiInquiry(), HBA_SendReportLUNs(), and
HBA_SendReadCapacity().
SunOS 5.11 Last change: 1 Sep 2003 8
Common Fibre Channel HBA Information Library FunctionsHBA_SendScsiInquiry(3HBAAPI)
SunOS 5.11 Last change: 1 Sep 2003 9