scsi: lpfc: Fix fc4type information for FDMI
authorJames Smart <jsmart2021@gmail.com>
Tue, 12 Mar 2019 23:30:21 +0000 (16:30 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 19 Mar 2019 17:15:09 +0000 (13:15 -0400)
The driver is reporting support for NVME even when not configured for NVME
operation.

Fix (and make more readable) when NVME protocol support is indicated.

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>
drivers/scsi/lpfc/lpfc_ct.c

index 0f09e9b4143590c2e3a397b03172720b677f405b..48a3633bce67ea26aa3e89d8bd7f2cd445cc5614 100644 (file)
@@ -2363,10 +2363,11 @@ lpfc_fdmi_port_attr_fc4type(struct lpfc_vport *vport,
        ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue;
        memset(ae, 0, 32);
 
-       ae->un.AttrTypes[3] = 0x02; /* Type 1 - ELS */
-       ae->un.AttrTypes[2] = 0x01; /* Type 8 - FCP */
-       ae->un.AttrTypes[6] = 0x01; /* Type 40 - NVME */
-       ae->un.AttrTypes[7] = 0x01; /* Type 32 - CT */
+       ae->un.AttrTypes[3] = 0x02; /* Type 0x1 - ELS */
+       ae->un.AttrTypes[2] = 0x01; /* Type 0x8 - FCP */
+       if (vport->nvmei_support || vport->phba->nvmet_support)
+               ae->un.AttrTypes[6] = 0x01; /* Type 0x28 - NVME */
+       ae->un.AttrTypes[7] = 0x01; /* Type 0x20 - CT */
        size = FOURBYTES + 32;
        ad->AttrLen = cpu_to_be16(size);
        ad->AttrType = cpu_to_be16(RPRT_SUPPORTED_FC4_TYPES);
@@ -2676,9 +2677,11 @@ lpfc_fdmi_port_attr_active_fc4type(struct lpfc_vport *vport,
        ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue;
        memset(ae, 0, 32);
 
-       ae->un.AttrTypes[3] = 0x02; /* Type 1 - ELS */
-       ae->un.AttrTypes[2] = 0x01; /* Type 8 - FCP */
-       ae->un.AttrTypes[7] = 0x01; /* Type 32 - CT */
+       ae->un.AttrTypes[3] = 0x02; /* Type 0x1 - ELS */
+       ae->un.AttrTypes[2] = 0x01; /* Type 0x8 - FCP */
+       if (vport->phba->cfg_enable_fc4_type & LPFC_ENABLE_NVME)
+               ae->un.AttrTypes[6] = 0x1; /* Type 0x28 - NVME */
+       ae->un.AttrTypes[7] = 0x01; /* Type 0x20 - CT */
        size = FOURBYTES + 32;
        ad->AttrLen = cpu_to_be16(size);
        ad->AttrType = cpu_to_be16(RPRT_ACTIVE_FC4_TYPES);