]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
be2iscsi: Fix max supported EQ count to 8.
authorJayamohan Kallickal <jayamohan.kallickal@emulex.com>
Wed, 26 Sep 2012 20:27:55 +0000 (01:57 +0530)
committerJerry Snitselaar <jerry.snitselaar@oracle.com>
Tue, 8 Jan 2013 23:37:30 +0000 (16:37 -0700)
 The maximum EQ that can be created for a function is 8. Check the
 CPU online count and create only 8 EQ if CPU_Count >= 8

Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
drivers/scsi/be2iscsi/be_main.c
drivers/scsi/be2iscsi/be_main.h

index fa0882ebba1f7d79079749a6e06d748f1d904076..54267c23f946c7f1cb03253b92d08390dab3bc95 100644 (file)
@@ -2889,7 +2889,7 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba,
        }
        return 0;
 create_eq_error:
-       for (i = 0; i < (phba->num_cpus + 1); i++) {
+       for (i = 0; i < (phba->num_cpus + eq_for_mcc); i++) {
                eq = &phwi_context->be_eq[i].q;
                mem = &eq->dma_mem;
                if (mem->va)
@@ -3314,15 +3314,20 @@ err:
        return -ENOMEM;
 }
 
-static int find_num_cpus(void)
+/**
+ * find_num_cpus()- Get the CPU online count
+ * @phba: ptr to priv structure
+ *
+ * CPU count is used for creating EQ.
+ **/
+static void find_num_cpus(struct beiscsi_hba *phba)
 {
        int  num_cpus = 0;
 
        num_cpus = num_online_cpus();
-       if (num_cpus >= MAX_CPUS)
-               num_cpus = MAX_CPUS - 1;
 
-       return num_cpus;
+       phba->num_cpus = (num_cpus >= BEISCSI_MAX_NUM_CPU) ?
+                        (BEISCSI_MAX_NUM_CPU - 1) : num_cpus;
 }
 
 static int hwi_init_port(struct beiscsi_hba *phba)
@@ -4541,7 +4546,7 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
        struct hwi_controller *phwi_ctrlr;
        struct hwi_context_memory *phwi_context;
        struct be_eq_obj *pbe_eq;
-       int ret, num_cpus, i;
+       int ret, i;
        u8 *real_offset = 0;
        u32 value = 0;
 
@@ -4577,10 +4582,10 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
        }
 
        if (enable_msix)
-               num_cpus = find_num_cpus();
+               find_num_cpus(phba);
        else
-               num_cpus = 1;
-       phba->num_cpus = num_cpus;
+               phba->num_cpus = 1;
+
        beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
                    "BM_%d : num_cpus = %d\n",
                    phba->num_cpus);
index aa959e26ba9907bde19d688eab0fc1d774d9917b..66c4153fbb9051b1cff711cdaef088a432e85e25 100644 (file)
@@ -61,6 +61,7 @@
 #define BE2_DEFPDU_DATA_SZ     8192
 
 #define MAX_CPUS               31
+#define BEISCSI_MAX_NUM_CPU    8
 #define BEISCSI_SGLIST_ELEMENTS        30
 
 #define BEISCSI_CMD_PER_LUN    128     /* scsi_host->cmd_per_lun */