lkml.org 
[lkml]   [2019]   [Dec]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 250/267] scsi: lpfc: Correct code setting non existent bits in sli4 ABORT WQE
    Date
    From: James Smart <jsmart2021@gmail.com>

    [ 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 | 2 --
    drivers/scsi/lpfc/lpfc_sli.c | 14 +++-----------
    2 files changed, 3 insertions(+), 13 deletions(-)

    diff --git a/drivers/scsi/lpfc/lpfc_nvme.c b/drivers/scsi/lpfc/lpfc_nvme.c
    index 6c4499db969c1..fcf4b4175d771 100644
    --- a/drivers/scsi/lpfc/lpfc_nvme.c
    +++ b/drivers/scsi/lpfc/lpfc_nvme.c
    @@ -1544,7 +1544,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);
    @@ -1559,7 +1558,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);

    diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
    index 62bea4ffdc25a..d3bad0dbfaf7f 100644
    --- a/drivers/scsi/lpfc/lpfc_sli.c
    +++ b/drivers/scsi/lpfc/lpfc_sli.c
    @@ -10722,19 +10722,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);
    @@ -10749,7 +10742,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);

    --
    2.20.1


    \
     
     \ /
      Last update: 2019-12-16 19:01    [W:4.190 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site