Commit 996a02ae authored by James Smart's avatar James Smart Committed by Martin K. Petersen

scsi: lpfc: Fix fcp_rsp_len checking on lun reset

Issuing a LUN reset was resulting in a command failure which then escalated
to a host reset.

The FCP-4 spec allows fcp_rsp_len field to specify the number of valid
bytes of FCP_RSP_INFO, and the value could be 4 or 8.  The driver is
allowing only a value of 8, thus it failed the command.

Revise the driver to allow 4 or 8.
Signed-off-by: default avatarDick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: default avatarJames Smart <jsmart2021@gmail.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 657add4e
...@@ -4798,7 +4798,12 @@ lpfc_check_fcp_rsp(struct lpfc_vport *vport, struct lpfc_io_buf *lpfc_cmd) ...@@ -4798,7 +4798,12 @@ lpfc_check_fcp_rsp(struct lpfc_vport *vport, struct lpfc_io_buf *lpfc_cmd)
rsp_info, rsp_info,
rsp_len, rsp_info_code); rsp_len, rsp_info_code);
if ((fcprsp->rspStatus2&RSP_LEN_VALID) && (rsp_len == 8)) { /* If FCP_RSP_LEN_VALID bit is one, then the FCP_RSP_LEN
* field specifies the number of valid bytes of FCP_RSP_INFO.
* The FCP_RSP_LEN field shall be set to 0x04 or 0x08
*/
if ((fcprsp->rspStatus2 & RSP_LEN_VALID) &&
((rsp_len == 8) || (rsp_len == 4))) {
switch (rsp_info_code) { switch (rsp_info_code) {
case RSP_NO_FAILURE: case RSP_NO_FAILURE:
lpfc_printf_vlog(vport, KERN_INFO, LOG_FCP, lpfc_printf_vlog(vport, KERN_INFO, LOG_FCP,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment