[SCSI] be2iscsi: Fix max EQ supported by the driver.
authorJohn Soni Jose <sony.john-n@emulex.com>
Fri, 19 Oct 2012 23:13:32 +0000 (04:43 +0530)
committerJames Bottomley <JBottomley@Parallels.com>
Tue, 27 Nov 2012 04:59:37 +0000 (08:59 +0400)
Fix the max EQ created when driver is loaded. Max EQ for
for new adapters will be 64.

Signed-off-by: John Soni Jose <sony.john-n@emulex.com>
Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/be2iscsi/be_main.c
drivers/scsi/be2iscsi/be_main.h

index 3328eb8e69f0deff73dbd9e95d8f45fdc5b14406..8a142cee8a568f5f2a305f19ffc43ae9a5dbdc04 100644 (file)
@@ -3325,8 +3325,19 @@ static void find_num_cpus(struct beiscsi_hba *phba)
 
        num_cpus = num_online_cpus();
 
-       phba->num_cpus = (num_cpus >= BEISCSI_MAX_NUM_CPU) ?
-                        (BEISCSI_MAX_NUM_CPU - 1) : num_cpus;
+       switch (phba->generation) {
+       case BE_GEN2:
+       case BE_GEN3:
+               phba->num_cpus = (num_cpus > BEISCSI_MAX_NUM_CPUS) ?
+                                 BEISCSI_MAX_NUM_CPUS : num_cpus;
+               break;
+       case BE_GEN4:
+               phba->num_cpus = (num_cpus > OC_SKH_MAX_NUM_CPUS) ?
+                                 OC_SKH_MAX_NUM_CPUS : num_cpus;
+               break;
+       default:
+               phba->num_cpus = 1;
+       }
 }
 
 static int hwi_init_port(struct beiscsi_hba *phba)
index 5302d3762f77f6131379292a1d3bd07986949c0c..2e534f3b7bfe5927f92d541d5493d3caad118195 100644 (file)
 #define BE2_DEFPDU_HDR_SZ      64
 #define BE2_DEFPDU_DATA_SZ     8192
 
-#define MAX_CPUS               31
-#define BEISCSI_MAX_NUM_CPU    8
+#define MAX_CPUS               64
+#define BEISCSI_MAX_NUM_CPUS   7
+#define OC_SKH_MAX_NUM_CPUS    63
+
+
 #define BEISCSI_SGLIST_ELEMENTS        30
 
 #define BEISCSI_CMD_PER_LUN    128     /* scsi_host->cmd_per_lun */
@@ -279,8 +282,8 @@ struct beiscsi_hba {
        unsigned short asic_revision;
        unsigned int num_cpus;
        unsigned int nxt_cqid;
-       struct msix_entry msix_entries[MAX_CPUS + 1];
-       char *msi_name[MAX_CPUS + 1];
+       struct msix_entry msix_entries[MAX_CPUS];
+       char *msi_name[MAX_CPUS];
        bool msix_enabled;
        struct be_mem_descriptor *init_mem;
 
@@ -841,7 +844,7 @@ struct hwi_context_memory {
        u16 max_eqd;            /* in usecs */
        u16 cur_eqd;            /* in usecs */
        struct be_eq_obj be_eq[MAX_CPUS];
-       struct be_queue_info be_cq[MAX_CPUS];
+       struct be_queue_info be_cq[MAX_CPUS - 1];
 
        struct be_queue_info be_def_hdrq;
        struct be_queue_info be_def_dataq;