public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: "Grove, Bradley" <bradley.grove@gmail.com>
To: linux-scsi@vger.kernel.org
Cc: james.smart@broadcom.com, dick.kennedy@broadcom.com,
	jejb@linux.ibm.com, martin.petersen@oracle.com,
	Jason Seba <jseba@attotech.com>,
	bradley.grove@gmail.com
Subject: Re: [PATCH] scsi: lpfc: Add support for ATTO Fibre Channel devices
Date: Thu, 12 May 2022 19:13:09 -0400	[thread overview]
Message-ID: <e0b7f888-89fc-6117-fe27-114bcbb3d4cc@gmail.com> (raw)
In-Reply-To: <20220512164032.47943-1-bgrove@attotech.com>


We'd like to withdraw this patch request while we work out an issue on 
our end.

Bradley Grove

On 5/12/2022 12:40 PM, Bradley Grove wrote:
> Update pci_device_id table and generate reporting strings for ATTO
> Celerity and ThunderLink Fibre Channel devices.
> 
> Co-developed-by: Jason Seba <jseba@attotech.com>
> Signed-off-by: Jason Seba <jseba@attotech.com>
> Signed-off-by: Bradley Grove <bgrove@attotech.com>
> ---
>   drivers/scsi/lpfc/lpfc_hw.h   | 22 +++++++++
>   drivers/scsi/lpfc/lpfc_ids.h  | 30 ++++++++++++
>   drivers/scsi/lpfc/lpfc_init.c | 89 +++++++++++++++++++++++++++++++++++
>   3 files changed, 141 insertions(+)
> 
> diff --git a/drivers/scsi/lpfc/lpfc_hw.h b/drivers/scsi/lpfc/lpfc_hw.h
> index d6050f3c9efe..74a02586fe55 100644
> --- a/drivers/scsi/lpfc/lpfc_hw.h
> +++ b/drivers/scsi/lpfc/lpfc_hw.h
> @@ -1738,6 +1738,28 @@ struct lpfc_fdmi_reg_portattr {
>   #define PCI_DEVICE_ID_TOMCAT        0x0714
>   #define PCI_DEVICE_ID_SKYHAWK       0x0724
>   #define PCI_DEVICE_ID_SKYHAWK_VF    0x072c
> +#define PCI_VENDOR_ID_ATTO          0x117c
> +#define PCI_DEVICE_ID_CLRY_16XE     0x0064
> +#define PCI_DEVICE_ID_CLRY_161E     0x0063
> +#define PCI_DEVICE_ID_CLRY_162E     0x0064
> +#define PCI_DEVICE_ID_CLRY_164E     0x0065
> +#define PCI_DEVICE_ID_CLRY_16XP     0x0094
> +#define PCI_DEVICE_ID_CLRY_161P     0x00a0
> +#define PCI_DEVICE_ID_CLRY_162P     0x0094
> +#define PCI_DEVICE_ID_CLRY_164P     0x00a1
> +#define PCI_DEVICE_ID_CLRY_32XE     0x0094
> +#define PCI_DEVICE_ID_CLRY_321E     0x00a2
> +#define PCI_DEVICE_ID_CLRY_322E     0x00a3
> +#define PCI_DEVICE_ID_CLRY_324E     0x00ac
> +#define PCI_DEVICE_ID_CLRY_32XP     0x00bb
> +#define PCI_DEVICE_ID_CLRY_321P     0x00bc
> +#define PCI_DEVICE_ID_CLRY_322P     0x00bd
> +#define PCI_DEVICE_ID_CLRY_324P     0x00be
> +#define PCI_DEVICE_ID_TLFC_2        0x0064
> +#define PCI_DEVICE_ID_TLFC_2XX2     0x4064
> +#define PCI_DEVICE_ID_TLFC_3        0x0094
> +#define PCI_DEVICE_ID_TLFC_3162     0x40a6
> +#define PCI_DEVICE_ID_TLFC_3322     0x40a7
>   
>   #define JEDEC_ID_ADDRESS            0x0080001c
>   #define FIREFLY_JEDEC_ID            0x1ACC
> diff --git a/drivers/scsi/lpfc/lpfc_ids.h b/drivers/scsi/lpfc/lpfc_ids.h
> index 6a90e6e53d09..a1b9be245560 100644
> --- a/drivers/scsi/lpfc/lpfc_ids.h
> +++ b/drivers/scsi/lpfc/lpfc_ids.h
> @@ -124,5 +124,35 @@ const struct pci_device_id lpfc_id_table[] = {
>   		PCI_ANY_ID, PCI_ANY_ID, },
>   	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_SKYHAWK_VF,
>   		PCI_ANY_ID, PCI_ANY_ID, },
> +	{PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_16XE,
> +		PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_161E, },
> +	{PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_16XE,
> +		PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_162E, },
> +	{PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_16XE,
> +		PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_164E, },
> +	{PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_16XP,
> +		PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_161P, },
> +	{PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_16XP,
> +		PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_162P, },
> +	{PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_16XP,
> +		PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_164P, },
> +	{PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_32XE,
> +		PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_321E, },
> +	{PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_32XE,
> +		PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_322E, },
> +	{PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_32XE,
> +		PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_324E, },
> +	{PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_32XP,
> +		PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_321P, },
> +	{PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_32XP,
> +		PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_322P, },
> +	{PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_32XP,
> +		PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_CLRY_324P, },
> +	{PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_TLFC_2,
> +		PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_TLFC_2XX2, },
> +	{PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_TLFC_3,
> +		PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_TLFC_3162, },
> +	{PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_TLFC_3,
> +		PCI_VENDOR_ID_ATTO, PCI_DEVICE_ID_TLFC_3322, },
>   	{ 0 }
>   };
> diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
> index 461d333b1b3a..45a71ab55be8 100644
> --- a/drivers/scsi/lpfc/lpfc_init.c
> +++ b/drivers/scsi/lpfc/lpfc_init.c
> @@ -2408,6 +2408,90 @@ lpfc_parse_vpd(struct lpfc_hba *phba, uint8_t *vpd, int len)
>   	return(1);
>   }
>   
> +/**
> + * lpfc_get_atto_model_desc - Retrieve ATTO HBA device model name and description
> + * @phba: pointer to lpfc hba data structure.
> + * @mdp: pointer to the data structure to hold the derived model name.
> + * @descp: pointer to the data structure to hold the derived description.
> + *
> + * This routine retrieves HBA's description based on its registered PCI device
> + * ID. The @descp passed into this function points to an array of 256 chars. It
> + * shall be returned with the model name, maximum speed, and the host bus type.
> + * The @mdp passed into this function points to an array of 80 chars. When the
> + * function returns, the @mdp will be filled with the model name.
> + **/
> +static void
> +lpfc_get_atto_model_desc(struct lpfc_hba *phba, uint8_t *mdp, uint8_t *descp)
> +{
> +	uint16_t sub_dev_id = phba->pcidev->subsystem_device;
> +	char *model = "<Unknown>";
> +	int tbolt = 0;
> +
> +	switch (sub_dev_id) {
> +	case PCI_DEVICE_ID_CLRY_161E:
> +		model = "161E";
> +		break;
> +	case PCI_DEVICE_ID_CLRY_162E:
> +		model = "162E";
> +		break;
> +	case PCI_DEVICE_ID_CLRY_164E:
> +		model = "164E";
> +		break;
> +	case PCI_DEVICE_ID_CLRY_161P:
> +		model = "161P";
> +		break;
> +	case PCI_DEVICE_ID_CLRY_162P:
> +		model = "162P";
> +		break;
> +	case PCI_DEVICE_ID_CLRY_164P:
> +		model = "164P";
> +		break;
> +	case PCI_DEVICE_ID_CLRY_321E:
> +		model = "321E";
> +		break;
> +	case PCI_DEVICE_ID_CLRY_322E:
> +		model = "322E";
> +		break;
> +	case PCI_DEVICE_ID_CLRY_324E:
> +		model = "324E";
> +		break;
> +	case PCI_DEVICE_ID_CLRY_321P:
> +		model = "321P";
> +		break;
> +	case PCI_DEVICE_ID_CLRY_322P:
> +		model = "322P";
> +		break;
> +	case PCI_DEVICE_ID_CLRY_324P:
> +		model = "324P";
> +		break;
> +	case PCI_DEVICE_ID_TLFC_2XX2:
> +		model = "2XX2";
> +		tbolt = 1;
> +		break;
> +	case PCI_DEVICE_ID_TLFC_3162:
> +		model = "3162";
> +		tbolt = 1;
> +		break;
> +	case PCI_DEVICE_ID_TLFC_3322:
> +		model = "3322";
> +		tbolt = 1;
> +		break;
> +	default:
> +		model = "Unknown";
> +		break;
> +	}
> +
> +	if (mdp && mdp[0] == '\0')
> +		snprintf(mdp, 79, "%s", model);
> +
> +	if (descp && descp[0] == '\0')
> +		snprintf(descp, 255,
> +			 "ATTO %s%s, Fibre Channel Adapter Initiator, Port %s",
> +			 (tbolt) ? "ThunderLink FC " : "Celerity FC-",
> +			 model,
> +			 phba->Port);
> +}
> +
>   /**
>    * lpfc_get_hba_model_desc - Retrieve HBA device model name and description
>    * @phba: pointer to lpfc hba data structure.
> @@ -2438,6 +2522,11 @@ lpfc_get_hba_model_desc(struct lpfc_hba *phba, uint8_t *mdp, uint8_t *descp)
>   		&& descp && descp[0] != '\0')
>   		return;
>   
> +	if (phba->pcidev->vendor == PCI_VENDOR_ID_ATTO) {
> +		lpfc_get_atto_model_desc(phba, mdp, descp);
> +		return;
> +	}
> +
>   	if (phba->lmt & LMT_64Gb)
>   		max_speed = 64;
>   	else if (phba->lmt & LMT_32Gb)

      reply	other threads:[~2022-05-12 23:13 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-12 16:40 [PATCH] scsi: lpfc: Add support for ATTO Fibre Channel devices Bradley Grove
2022-05-12 23:13 ` Grove, Bradley [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e0b7f888-89fc-6117-fe27-114bcbb3d4cc@gmail.com \
    --to=bradley.grove@gmail.com \
    --cc=dick.kennedy@broadcom.com \
    --cc=james.smart@broadcom.com \
    --cc=jejb@linux.ibm.com \
    --cc=jseba@attotech.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox