lkml.org 
[lkml]   [2019]   [Dec]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 044/209] scsi: lpfc: Enable Management features for IF_TYPE=6
    Date
    From: James Smart <jsmart2021@gmail.com>

    [ Upstream commit 719162bd5bb968203397b9b1d0dd30a9797bbd09 ]

    Addition of support for if_type=6 missed several checks for interface type,
    resulting in the failure of several key management features such as
    firmware dump and loopback testing.

    Correct the checks on the if_type so that both SLI4 IF_TYPE's 2 and 6 are
    supported.

    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/scsi/lpfc/lpfc_attr.c | 4 ++--
    drivers/scsi/lpfc/lpfc_bsg.c | 6 +++---
    drivers/scsi/lpfc/lpfc_els.c | 2 +-
    drivers/scsi/lpfc/lpfc_hbadisc.c | 2 +-
    4 files changed, 7 insertions(+), 7 deletions(-)

    diff --git a/drivers/scsi/lpfc/lpfc_attr.c b/drivers/scsi/lpfc/lpfc_attr.c
    index 3da242201cb45..82ce5d1930189 100644
    --- a/drivers/scsi/lpfc/lpfc_attr.c
    +++ b/drivers/scsi/lpfc/lpfc_attr.c
    @@ -1178,7 +1178,7 @@ lpfc_sli4_pdev_reg_request(struct lpfc_hba *phba, uint32_t opcode)
    return -EACCES;

    if ((phba->sli_rev < LPFC_SLI_REV4) ||
    - (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) !=
    + (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) <
    LPFC_SLI_INTF_IF_TYPE_2))
    return -EPERM;

    @@ -4056,7 +4056,7 @@ lpfc_link_speed_store(struct device *dev, struct device_attribute *attr,
    uint32_t prev_val, if_type;

    if_type = bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf);
    - if (if_type == LPFC_SLI_INTF_IF_TYPE_2 &&
    + if (if_type >= LPFC_SLI_INTF_IF_TYPE_2 &&
    phba->hba_flag & HBA_FORCED_LINK_SPEED)
    return -EPERM;

    diff --git a/drivers/scsi/lpfc/lpfc_bsg.c b/drivers/scsi/lpfc/lpfc_bsg.c
    index d89816222b230..6dde21dc82a3c 100644
    --- a/drivers/scsi/lpfc/lpfc_bsg.c
    +++ b/drivers/scsi/lpfc/lpfc_bsg.c
    @@ -2221,7 +2221,7 @@ lpfc_bsg_diag_loopback_mode(struct bsg_job *job)

    if (phba->sli_rev < LPFC_SLI_REV4)
    rc = lpfc_sli3_bsg_diag_loopback_mode(phba, job);
    - else if (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) ==
    + else if (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) >=
    LPFC_SLI_INTF_IF_TYPE_2)
    rc = lpfc_sli4_bsg_diag_loopback_mode(phba, job);
    else
    @@ -2261,7 +2261,7 @@ lpfc_sli4_bsg_diag_mode_end(struct bsg_job *job)

    if (phba->sli_rev < LPFC_SLI_REV4)
    return -ENODEV;
    - if (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) !=
    + if (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) <
    LPFC_SLI_INTF_IF_TYPE_2)
    return -ENODEV;

    @@ -2353,7 +2353,7 @@ lpfc_sli4_bsg_link_diag_test(struct bsg_job *job)
    rc = -ENODEV;
    goto job_error;
    }
    - if (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) !=
    + if (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) <
    LPFC_SLI_INTF_IF_TYPE_2) {
    rc = -ENODEV;
    goto job_error;
    diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c
    index a31f87eb1e621..c851fd14ff3e9 100644
    --- a/drivers/scsi/lpfc/lpfc_els.c
    +++ b/drivers/scsi/lpfc/lpfc_els.c
    @@ -5550,7 +5550,7 @@ lpfc_els_rcv_rdp(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb,
    struct ls_rjt stat;

    if (phba->sli_rev < LPFC_SLI_REV4 ||
    - bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) !=
    + bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) <
    LPFC_SLI_INTF_IF_TYPE_2) {
    rjt_err = LSRJT_UNABLE_TPC;
    rjt_expl = LSEXP_REQ_UNSUPPORTED;
    diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c
    index d850077c5e226..3f88f3d796227 100644
    --- a/drivers/scsi/lpfc/lpfc_hbadisc.c
    +++ b/drivers/scsi/lpfc/lpfc_hbadisc.c
    @@ -4769,7 +4769,7 @@ lpfc_unreg_rpi(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp)
    if (phba->sli_rev == LPFC_SLI_REV4 &&
    (!(vport->load_flag & FC_UNLOADING)) &&
    (bf_get(lpfc_sli_intf_if_type,
    - &phba->sli4_hba.sli_intf) ==
    + &phba->sli4_hba.sli_intf) >=
    LPFC_SLI_INTF_IF_TYPE_2) &&
    (kref_read(&ndlp->kref) > 0)) {
    mbox->context1 = lpfc_nlp_get(ndlp);
    --
    2.20.1


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