]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
lpfc: Fix interaction between fdmi_on and enable_SmartSAN
authorJames Smart <james.smart@broadcom.com>
Thu, 31 Mar 2016 21:12:33 +0000 (14:12 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Mon, 11 Apr 2016 20:57:09 +0000 (16:57 -0400)
Signed-off-by: Dick Kennedy <dick.kennedy@avagotech.com>
Signed-off-by: James Smart <james.smart@avagotech.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc.h
drivers/scsi/lpfc/lpfc_attr.c
drivers/scsi/lpfc/lpfc_els.c
drivers/scsi/lpfc/lpfc_init.c
drivers/scsi/lpfc/lpfc_vport.c

index da237d9c4b55681987790ada08d273c7adeaf1c0..283942a4ae82d75a771fe53b26163b2b45c9b9fa 100644 (file)
@@ -758,7 +758,6 @@ struct lpfc_hba {
        uint32_t cfg_fdmi_on;
 #define LPFC_FDMI_NO_SUPPORT   0       /* FDMI not supported */
 #define LPFC_FDMI_SUPPORT      1       /* FDMI supported? */
-#define LPFC_FDMI_SMART_SAN    2       /* SmartSAN supported */
        uint32_t cfg_enable_SmartSAN;
        lpfc_vpd_t vpd;         /* vital product data */
 
index d4559a6175e2497748fded92b01001a1bf26c97f..9528f863f2194f1f0405a82da77e20a7ed4d9904 100644 (file)
@@ -4584,15 +4584,14 @@ LPFC_ATTR_R(enable_SmartSAN, 0, 0, 1, "Enable SmartSAN functionality");
 # lpfc_fdmi_on: Controls FDMI support.
 #       0       No FDMI support (default)
 #       1       Traditional FDMI support
-#       2       Smart SAN support
-# If lpfc_enable_SmartSAN is set 1, the driver sets lpfc_fdmi_on to value 2
-# overwriting the current value.  If lpfc_enable_SmartSAN is set 0, the
-# driver uses the current value of lpfc_fdmi_on provided it has value 0 or 1.
-# A value of 2 with lpfc_enable_SmartSAN set to 0 causes the driver to
-# set lpfc_fdmi_on back to 1.
-# Value range [0,2]. Default value is 0.
+# Traditional FDMI support means the driver will assume FDMI-2 support;
+# however, if that fails, it will fallback to FDMI-1.
+# If lpfc_enable_SmartSAN is set to 1, the driver ignores lpfc_fdmi_on.
+# If lpfc_enable_SmartSAN is set 0, the driver uses the current value of
+# lpfc_fdmi_on.
+# Value range [0,1]. Default value is 0.
 */
-LPFC_ATTR_R(fdmi_on, 0, 0, 2, "Enable FDMI support");
+LPFC_ATTR_R(fdmi_on, 0, 0, 1, "Enable FDMI support");
 
 /*
 # Specifies the maximum number of ELS cmds we can have outstanding (for
@@ -5856,14 +5855,6 @@ lpfc_get_cfgparam(struct lpfc_hba *phba)
        else
                phba->cfg_poll = lpfc_poll;
 
-       /* Ensure fdmi_on and enable_SmartSAN don't conflict */
-       if (phba->cfg_enable_SmartSAN) {
-               phba->cfg_fdmi_on = LPFC_FDMI_SMART_SAN;
-       } else {
-               if (phba->cfg_fdmi_on == LPFC_FDMI_SMART_SAN)
-                       phba->cfg_fdmi_on = LPFC_FDMI_SUPPORT;
-       }
-
        phba->cfg_soft_wwnn = 0L;
        phba->cfg_soft_wwpn = 0L;
        lpfc_sg_seg_cnt_init(phba, lpfc_sg_seg_cnt);
index 9459ac4516004240af13e12a410ba8c4c269a25f..6cc1af42af364abfcb225b1696e661c372b76c11 100644 (file)
@@ -690,16 +690,17 @@ lpfc_cmpl_els_flogi_fabric(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
        fabric_param_changed = lpfc_check_clean_addr_bit(vport, sp);
        if (fabric_param_changed) {
                /* Reset FDMI attribute masks based on config parameter */
-               if (phba->cfg_fdmi_on == LPFC_FDMI_NO_SUPPORT) {
-                       vport->fdmi_hba_mask = 0;
-                       vport->fdmi_port_mask = 0;
-               } else {
+               if (phba->cfg_enable_SmartSAN ||
+                   (phba->cfg_fdmi_on == LPFC_FDMI_SUPPORT)) {
                        /* Setup appropriate attribute masks */
                        vport->fdmi_hba_mask = LPFC_FDMI2_HBA_ATTR;
-                       if (phba->cfg_fdmi_on == LPFC_FDMI_SMART_SAN)
+                       if (phba->cfg_enable_SmartSAN)
                                vport->fdmi_port_mask = LPFC_FDMI2_SMART_ATTR;
                        else
                                vport->fdmi_port_mask = LPFC_FDMI2_PORT_ATTR;
+               } else {
+                       vport->fdmi_hba_mask = 0;
+                       vport->fdmi_port_mask = 0;
                }
 
        }
@@ -8005,8 +8006,9 @@ lpfc_do_scr_ns_plogi(struct lpfc_hba *phba, struct lpfc_vport *vport)
                return;
        }
 
-       if ((phba->cfg_fdmi_on > LPFC_FDMI_NO_SUPPORT) &&
-           (vport->load_flag & FC_ALLOW_FDMI))
+       if ((phba->cfg_enable_SmartSAN ||
+            (phba->cfg_fdmi_on == LPFC_FDMI_SUPPORT)) &&
+            (vport->load_flag & FC_ALLOW_FDMI))
                lpfc_start_fdmi(vport);
 }
 
index f0d0852bee0d64e8446e61730c1f3331d69e59e1..c922a2b1f864f7f1e7e083d0c7572f14d98f0e68 100644 (file)
@@ -6158,11 +6158,12 @@ lpfc_create_shost(struct lpfc_hba *phba)
         * any initial discovery should be completed.
         */
        vport->load_flag |= FC_ALLOW_FDMI;
-       if (phba->cfg_fdmi_on > LPFC_FDMI_NO_SUPPORT) {
+       if (phba->cfg_enable_SmartSAN ||
+           (phba->cfg_fdmi_on == LPFC_FDMI_SUPPORT)) {
 
                /* Setup appropriate attribute masks */
                vport->fdmi_hba_mask = LPFC_FDMI2_HBA_ATTR;
-               if (phba->cfg_fdmi_on == LPFC_FDMI_SMART_SAN)
+               if (phba->cfg_enable_SmartSAN)
                        vport->fdmi_port_mask = LPFC_FDMI2_SMART_ATTR;
                else
                        vport->fdmi_port_mask = LPFC_FDMI2_PORT_ATTR;
index b3f85def18ccca8daff2a809aac3d7b4e69cec1e..9b7adcac5a87a59fe70f615c9a334b4b2a5342a8 100644 (file)
@@ -395,7 +395,8 @@ lpfc_vport_create(struct fc_vport *fc_vport, bool disable)
 
        /* At this point we are fully registered with SCSI Layer.  */
        vport->load_flag |= FC_ALLOW_FDMI;
-       if (phba->cfg_fdmi_on > LPFC_FDMI_NO_SUPPORT) {
+       if (phba->cfg_enable_SmartSAN ||
+           (phba->cfg_fdmi_on == LPFC_FDMI_SUPPORT)) {
                /* Setup appropriate attribute masks */
                vport->fdmi_hba_mask = phba->pport->fdmi_hba_mask;
                vport->fdmi_port_mask = phba->pport->fdmi_port_mask;