Re: [PATCH 15/17 v2] lpfc: Synchronize link speed with boot driver

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

 



On Wed, Oct 12, 2016 at 01:14:18PM -0700, James Smart wrote:
> 
> Synchronize link speed with boot driver
> 
> Link speed settings set by the boot driver are reported by the hw.
> Driver will attempt to read them, and if set, will respect their
> values.
> The driver can override the settings with its own if instructed by
> user space (via bsg), with the new values being picked up by the
> boot driver.
> 
> Signed-off-by: Dick Kennedy <dick.kennedy@xxxxxxxxxxxx>
> Signed-off-by: James Smart <james.smart@xxxxxxxxxxxx>
> ---
>  drivers/scsi/lpfc/lpfc.h      |  4 ++++
>  drivers/scsi/lpfc/lpfc_attr.c |  7 +++++-
>  drivers/scsi/lpfc/lpfc_bsg.c  | 44 +++++++++++++++++++++++++++++++++++
>  drivers/scsi/lpfc/lpfc_bsg.h  | 10 ++++++++
>  drivers/scsi/lpfc/lpfc_hw4.h  |  3 +++
>  drivers/scsi/lpfc/lpfc_init.c | 54 +++++++++++++++++++++++++++++++++++++++++++
>  6 files changed, 121 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/scsi/lpfc/lpfc.h b/drivers/scsi/lpfc/lpfc.h
> index debba5e..8a20b4e 100644
> --- a/drivers/scsi/lpfc/lpfc.h
> +++ b/drivers/scsi/lpfc/lpfc.h
> @@ -648,6 +648,10 @@ struct lpfc_hba {
>  #define HBA_FCP_IOQ_FLUSH	0x8000 /* FCP I/O queues being flushed */
>  #define HBA_FW_DUMP_OP		0x10000 /* Skips fn reset before FW dump */
>  #define HBA_RECOVERABLE_UE	0x20000 /* Firmware supports recoverable UE */
> +#define HBA_FORCED_LINK_SPEED	0x40000 /*
> +					 * Firmware supports Forced Link Speed
> +					 * capability
> +					 */
>  	uint32_t fcp_ring_in_use; /* When polling test if intr-hndlr active*/
>  	struct lpfc_dmabuf slim2p;
>  
> diff --git a/drivers/scsi/lpfc/lpfc_attr.c b/drivers/scsi/lpfc/lpfc_attr.c
> index 3740e5d..39ba01a 100644
> --- a/drivers/scsi/lpfc/lpfc_attr.c
> +++ b/drivers/scsi/lpfc/lpfc_attr.c
> @@ -3668,7 +3668,12 @@ lpfc_link_speed_store(struct device *dev, struct device_attribute *attr,
>  	int nolip = 0;
>  	const char *val_buf = buf;
>  	int err;
> -	uint32_t prev_val;
> +	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) &&
> +	    (phba->hba_flag & HBA_FORCED_LINK_SPEED))

The parentheses aren't needed here.

> +		return -EPERM;
>  
>  	if (!strncmp(buf, "nolip ", strlen("nolip "))) {
>  		nolip = 1;
> diff --git a/drivers/scsi/lpfc/lpfc_bsg.c b/drivers/scsi/lpfc/lpfc_bsg.c
> index 05dcc2a..f9f5972 100644
> --- a/drivers/scsi/lpfc/lpfc_bsg.c
> +++ b/drivers/scsi/lpfc/lpfc_bsg.c
> @@ -5185,6 +5185,47 @@ no_dd_data:
>  	return rc;
>  }
>  
> +static int
> +lpfc_forced_link_speed(struct fc_bsg_job *job)

This has an unfortunate collision with my bsg rewrite series. Please remind me
of that fact when your patches are merged and mine aren't yet. But it's a
nice test case :-).

> +{
> +	struct lpfc_vport *vport = (struct lpfc_vport *)job->shost->hostdata;

Please use shost_priv() here, or if you want to make my live easy 
	struct Scsi_Host *shost = job->shost;
	struct lpfc_vport *vport = shost_priv(shost);

Other than that,
Reviewed-by: Johannes Thumshirn <jthumshirn@xxxxxxx>

-- 
Johannes Thumshirn                                          Storage
jthumshirn@xxxxxxx                                +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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