]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
scsi: lpfc: Correct code setting non existent bits in sli4 ABORT WQE
authorJames Smart <jsmart2021@gmail.com>
Fri, 30 Nov 2018 00:09:37 +0000 (16:09 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 17 Dec 2019 19:35:29 +0000 (20:35 +0100)
[ Upstream commit 1c36833d82ff24d0d54215fd956e7cc30fffce54 ]

Driver is setting bits in word 10 of the SLI4 ABORT WQE (the wqid).  The
field was a carry over from a prior SLI revision. The field does not exist
in SLI4, and the action may result in an overlap with future definition of
the WQE.

Remove the setting of WQID in the ABORT WQE.

Also cleaned up WQE field settings - initialize to zero, don't bother to
set fields to zero.

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/scsi/lpfc/lpfc_nvme.c
drivers/scsi/lpfc/lpfc_sli.c

index 8ee585e453dcfbfde7e68d0dc35d40e29761e6af..f73726e55e44d257a8f4e41a92e8325b892af5bc 100644 (file)
@@ -1856,7 +1856,6 @@ lpfc_nvme_fcp_abort(struct nvme_fc_local_port *pnvme_lport,
        bf_set(abort_cmd_criteria, &abts_wqe->abort_cmd, T_XRI_TAG);
 
        /* word 7 */
-       bf_set(wqe_ct, &abts_wqe->abort_cmd.wqe_com, 0);
        bf_set(wqe_cmnd, &abts_wqe->abort_cmd.wqe_com, CMD_ABORT_XRI_CX);
        bf_set(wqe_class, &abts_wqe->abort_cmd.wqe_com,
               nvmereq_wqe->iocb.ulpClass);
@@ -1871,7 +1870,6 @@ lpfc_nvme_fcp_abort(struct nvme_fc_local_port *pnvme_lport,
               abts_buf->iotag);
 
        /* word 10 */
-       bf_set(wqe_wqid, &abts_wqe->abort_cmd.wqe_com, nvmereq_wqe->hba_wqidx);
        bf_set(wqe_qosd, &abts_wqe->abort_cmd.wqe_com, 1);
        bf_set(wqe_lenloc, &abts_wqe->abort_cmd.wqe_com, LPFC_WQE_LENLOC_NONE);
 
index 755803ff6cfef021fb3922bb1d34fc501a8a46ba..f459fd62e493c20b735b2651e73a7a07148b3490 100644 (file)
@@ -10989,19 +10989,12 @@ lpfc_sli4_abort_nvme_io(struct lpfc_hba *phba, struct lpfc_sli_ring *pring,
 
        /* Complete prepping the abort wqe and issue to the FW. */
        abts_wqe = &abtsiocbp->wqe;
-       bf_set(abort_cmd_ia, &abts_wqe->abort_cmd, 0);
-       bf_set(abort_cmd_criteria, &abts_wqe->abort_cmd, T_XRI_TAG);
-
-       /* Explicitly set reserved fields to zero.*/
-       abts_wqe->abort_cmd.rsrvd4 = 0;
-       abts_wqe->abort_cmd.rsrvd5 = 0;
 
-       /* WQE Common - word 6.  Context is XRI tag.  Set 0. */
-       bf_set(wqe_xri_tag, &abts_wqe->abort_cmd.wqe_com, 0);
-       bf_set(wqe_ctxt_tag, &abts_wqe->abort_cmd.wqe_com, 0);
+       /* Clear any stale WQE contents */
+       memset(abts_wqe, 0, sizeof(union lpfc_wqe));
+       bf_set(abort_cmd_criteria, &abts_wqe->abort_cmd, T_XRI_TAG);
 
        /* word 7 */
-       bf_set(wqe_ct, &abts_wqe->abort_cmd.wqe_com, 0);
        bf_set(wqe_cmnd, &abts_wqe->abort_cmd.wqe_com, CMD_ABORT_XRI_CX);
        bf_set(wqe_class, &abts_wqe->abort_cmd.wqe_com,
               cmdiocb->iocb.ulpClass);
@@ -11016,7 +11009,6 @@ lpfc_sli4_abort_nvme_io(struct lpfc_hba *phba, struct lpfc_sli_ring *pring,
               abtsiocbp->iotag);
 
        /* word 10 */
-       bf_set(wqe_wqid, &abts_wqe->abort_cmd.wqe_com, cmdiocb->hba_wqidx);
        bf_set(wqe_qosd, &abts_wqe->abort_cmd.wqe_com, 1);
        bf_set(wqe_lenloc, &abts_wqe->abort_cmd.wqe_com, LPFC_WQE_LENLOC_NONE);