summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_os.c
diff options
context:
space:
mode:
authorQuinn Tran2018-09-04 23:19:12 +0200
committerMartin K. Petersen2018-09-12 02:28:08 +0200
commit0691094ff3f2cfa357b9de9030b65eddc4dab29d (patch)
treeb4c749cfa433a3cf7d330c40cbd174098c76669c /drivers/scsi/qla2xxx/qla_os.c
parentscsi: qla2xxx: Add appropriate debug info for invalid RX_ID (diff)
downloadkernel-qcow2-linux-0691094ff3f2cfa357b9de9030b65eddc4dab29d.tar.gz
kernel-qcow2-linux-0691094ff3f2cfa357b9de9030b65eddc4dab29d.tar.xz
kernel-qcow2-linux-0691094ff3f2cfa357b9de9030b65eddc4dab29d.zip
scsi: qla2xxx: Add logic to detect ABTS hang and response completion
ABTS error completion can trigger an exchange cleanup from the driver and another ABTS response will be generated. This retry of ABTS response can cause loop between driver trying to send ABTS and firmware returning error. This patch fixes this issue by adding logic to check for unresolved exchanges and clean up before ABTS is retried. This patch also addes the fix to use the same qpair as the ABTS completion for the terminatation of exchange as well as retry of ABTS response. Signed-off-by: Quinn Tran <quinn.tran@cavium.com> Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_os.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 9628fe4a967f..f3787fc48533 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -391,6 +391,7 @@ static void qla_init_base_qpair(struct scsi_qla_host *vha, struct req_que *req,
struct qla_hw_data *ha = vha->hw;
rsp->qpair = ha->base_qpair;
rsp->req = req;
+ ha->base_qpair->hw = ha;
ha->base_qpair->req = req;
ha->base_qpair->rsp = rsp;
ha->base_qpair->vha = vha;