Re: [PATCH repost] lpfc: Enable Management features for IF_TYPE=6

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2018-12-10 at 19:37 -0800, James Smart wrote:
> 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@xxxxxxxxxxxx>
> Signed-off-by: James Smart <jsmart2021@xxxxxxxxx>
> ---
>  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 83924d66fd39..513ac1be861f 100644
> --- a/drivers/scsi/lpfc/lpfc_attr.c
> +++ b/drivers/scsi/lpfc/lpfc_attr.c
> @@ -1358,7 +1358,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;
>  
> @@ -4361,7 +4361,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 cb18dac68e28..8698af86485d 100644
> --- a/drivers/scsi/lpfc/lpfc_bsg.c
> +++ b/drivers/scsi/lpfc/lpfc_bsg.c
> @@ -2222,7 +2222,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
> @@ -2262,7 +2262,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;
>  
> @@ -2354,7 +2354,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 103ee7049633..d222baf35d15 100644
> --- a/drivers/scsi/lpfc/lpfc_els.c
> +++ b/drivers/scsi/lpfc/lpfc_els.c
> @@ -5733,7 +5733,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 8857f559e6c3..91189e9c8530 100644
> --- a/drivers/scsi/lpfc/lpfc_hbadisc.c
> +++ b/drivers/scsi/lpfc/lpfc_hbadisc.c
> @@ -4850,7 +4850,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->ctx_ndlp = lpfc_nlp_get(ndlp);

Reviewed-by: Ewan D. Milne <emilne@xxxxxxxxxx>




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux