[SCSI] lpfc 8.3.12: Miscellaneous Changes
authorJames Smart <james.smart@emulex.com>
Tue, 6 Apr 2010 18:49:03 +0000 (14:49 -0400)
committerJames Bottomley <James.Bottomley@suse.de>
Sun, 11 Apr 2010 18:44:55 +0000 (13:44 -0500)
- Prevent log message 1801 during vport delete.
- Enable NPIV by default.
- Display correct value for max Vports on SLI4 HBAs.

Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/lpfc/lpfc_attr.c
drivers/scsi/lpfc/lpfc_vport.c

index 5df15c65b35bf19b212bd55e5e942282658920e0..2e5f376d9ccc26f5bed47754adc69b76940e2706 100644 (file)
@@ -869,6 +869,7 @@ lpfc_get_hba_info(struct lpfc_hba *phba,
        LPFC_MBOXQ_t *pmboxq;
        MAILBOX_t *pmb;
        int rc = 0;
+       uint32_t max_vpi;
 
        /*
         * prevent udev from issuing mailbox commands until the port is
@@ -916,11 +917,17 @@ lpfc_get_hba_info(struct lpfc_hba *phba,
                if (axri)
                        *axri = bf_get(lpfc_mbx_rd_conf_xri_count, rd_config) -
                                        phba->sli4_hba.max_cfg_param.xri_used;
+
+               /* Account for differences with SLI-3.  Get vpi count from
+                * mailbox data and subtract one for max vpi value.
+                */
+               max_vpi = (bf_get(lpfc_mbx_rd_conf_vpi_count, rd_config) > 0) ?
+                       (bf_get(lpfc_mbx_rd_conf_vpi_count, rd_config) - 1) : 0;
+
                if (mvpi)
-                       *mvpi = bf_get(lpfc_mbx_rd_conf_vpi_count, rd_config);
+                       *mvpi = max_vpi;
                if (avpi)
-                       *avpi = bf_get(lpfc_mbx_rd_conf_vpi_count, rd_config) -
-                                       phba->sli4_hba.max_cfg_param.vpi_used;
+                       *avpi = max_vpi - phba->sli4_hba.max_cfg_param.vpi_used;
        } else {
                if (mrpi)
                        *mrpi = pmb->un.varRdConfig.max_rpi;
@@ -1925,13 +1932,12 @@ MODULE_PARM_DESC(lpfc_sli_mode, "SLI mode selector:"
                 " 2 - select SLI-2 even on SLI-3 capable HBAs,"
                 " 3 - select SLI-3");
 
-int lpfc_enable_npiv = 0;
+int lpfc_enable_npiv = 1;
 module_param(lpfc_enable_npiv, int, 0);
 MODULE_PARM_DESC(lpfc_enable_npiv, "Enable NPIV functionality");
 lpfc_param_show(enable_npiv);
 lpfc_param_init(enable_npiv, 1, 0, 1);
-static DEVICE_ATTR(lpfc_enable_npiv, S_IRUGO,
-                        lpfc_enable_npiv_show, NULL);
+static DEVICE_ATTR(lpfc_enable_npiv, S_IRUGO, lpfc_enable_npiv_show, NULL);
 
 /*
 # lpfc_suppress_link_up:  Bring link up at initialization
index ffd575c379f34b9b046415f4c11737e10677b6e4..ab91359bde209a64b9485b31c5124262c9400c48 100644 (file)
@@ -763,7 +763,9 @@ lpfc_create_vport_work_array(struct lpfc_hba *phba)
        spin_lock_irq(&phba->hbalock);
        list_for_each_entry(port_iterator, &phba->port_list, listentry) {
                if (!scsi_host_get(lpfc_shost_from_vport(port_iterator))) {
-                       lpfc_printf_vlog(port_iterator, KERN_WARNING, LOG_VPORT,
+                       if (!(port_iterator->load_flag & FC_UNLOADING))
+                               lpfc_printf_vlog(port_iterator, KERN_ERR,
+                                        LOG_VPORT,
                                         "1801 Create vport work array FAILED: "
                                         "cannot do scsi_host_get\n");
                        continue;