From: Dick Kennedy <dick.kenn...@broadcom.com>

The driver is encountering  oops in lpfc_sli_calc_ring.

The driver is setting hba_wqidx for FCP based on the
policy in use for NVME. The two may not be the same.
Change to set the wqidx based on the FCP policy.

Signed-off-by: Dick Kennedy <dick.kenn...@broadcom.com>
Signed-off-by: James Smart <james.sm...@broadcom.com>
---
 drivers/scsi/lpfc/lpfc_sli.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
index a69332f0abcd..e50f1c1e484d 100644
--- a/drivers/scsi/lpfc/lpfc_sli.c
+++ b/drivers/scsi/lpfc/lpfc_sli.c
@@ -9396,10 +9396,13 @@ lpfc_sli4_calc_ring(struct lpfc_hba *phba, struct 
lpfc_iocbq *piocb)
                         * for abort iocb hba_wqidx should already
                         * be setup based on what work queue we used.
                         */
-                       if (!(piocb->iocb_flag & LPFC_USE_FCPWQIDX))
+                       if (!(piocb->iocb_flag & LPFC_USE_FCPWQIDX)) {
                                piocb->hba_wqidx =
                                        lpfc_sli4_scmd_to_wqidx_distr(phba,
                                                              piocb->context1);
+                               piocb->hba_wqidx = piocb->hba_wqidx %
+                                       phba->cfg_fcp_io_channel;
+                       }
                        return phba->sli4_hba.fcp_wq[piocb->hba_wqidx]->pring;
                } else {
                        if (unlikely(!phba->sli4_hba.oas_wq))
-- 
2.13.1

Reply via email to