mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
[SCSI] qla2xxx: Adjust FCP_RSP response-info field check after TMF completion.
Based on reading of the FCP2/4 specification, the driver cannot expect the storage device to send FCP_RSP information. Instead, the driver should interpret the data which is present in the frame to base decisions on the success or failure of the system. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: Madhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
6aef87bea9
commit
97dec564fd
1 changed files with 13 additions and 16 deletions
|
@ -2462,22 +2462,19 @@ __qla24xx_issue_tmf(char *name, uint32_t type, struct fc_port *fcport,
|
|||
"-- completion status (%x).\n", __func__,
|
||||
vha->host_no, le16_to_cpu(sts->comp_status)));
|
||||
rval = QLA_FUNCTION_FAILED;
|
||||
} else if (!(le16_to_cpu(sts->scsi_status) &
|
||||
SS_RESPONSE_INFO_LEN_VALID)) {
|
||||
DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB "
|
||||
"-- no response info (%x).\n", __func__, vha->host_no,
|
||||
le16_to_cpu(sts->scsi_status)));
|
||||
rval = QLA_FUNCTION_FAILED;
|
||||
} else if (le32_to_cpu(sts->rsp_data_len) < 4) {
|
||||
DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB "
|
||||
"-- not enough response info (%d).\n", __func__,
|
||||
vha->host_no, le32_to_cpu(sts->rsp_data_len)));
|
||||
rval = QLA_FUNCTION_FAILED;
|
||||
} else if (sts->data[3]) {
|
||||
DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB "
|
||||
"-- response (%x).\n", __func__,
|
||||
vha->host_no, sts->data[3]));
|
||||
rval = QLA_FUNCTION_FAILED;
|
||||
} else if (le16_to_cpu(sts->scsi_status) &
|
||||
SS_RESPONSE_INFO_LEN_VALID) {
|
||||
if (le32_to_cpu(sts->rsp_data_len) < 4) {
|
||||
DEBUG2_3_11(printk("%s(%ld): ignoring inconsistent "
|
||||
"data length -- not enough response info (%d).\n",
|
||||
__func__, vha->host_no,
|
||||
le32_to_cpu(sts->rsp_data_len)));
|
||||
} else if (sts->data[3]) {
|
||||
DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB "
|
||||
"-- response (%x).\n", __func__,
|
||||
vha->host_no, sts->data[3]));
|
||||
rval = QLA_FUNCTION_FAILED;
|
||||
}
|
||||
}
|
||||
|
||||
/* Issue marker IOCB. */
|
||||
|
|
Loading…
Reference in a new issue