]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
[SCSI] be2iscsi: Fixing memory allocation for connection
authorJayamohan Kallickal <jayamohank@serverengines.com>
Sat, 20 Feb 2010 02:35:07 +0000 (08:05 +0530)
committerJames Bottomley <James.Bottomley@suse.de>
Wed, 3 Mar 2010 13:00:06 +0000 (18:30 +0530)
This patch fixes some situations where enough resources were not
avaialable  when targets exceeded a certain limit

Signed-off-by: Jayamohan Kallickal <jayamohank@serverengines.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/be2iscsi/be_main.c
drivers/scsi/be2iscsi/be_main.h

index b5dca45bae969eefd2f5473ee876070aff41205b..5887d7a0e3ffc54628d665e2e877bf215c13c684 100644 (file)
@@ -359,7 +359,7 @@ static void beiscsi_get_params(struct beiscsi_hba *phba)
                                    + BE2_TMFS
                                    + BE2_NOPOUT_REQ));
        phba->params.cxns_per_ctrl = phba->fw_config.iscsi_cid_count;
-       phba->params.asyncpdus_per_ctrl = phba->fw_config.iscsi_cid_count;;
+       phba->params.asyncpdus_per_ctrl = phba->fw_config.iscsi_cid_count * 2;
        phba->params.icds_per_ctrl = phba->fw_config.iscsi_icd_count;;
        phba->params.num_sge_per_io = BE2_SGE;
        phba->params.defpdu_hdr_sz = BE2_DEFPDU_HDR_SZ;
@@ -2169,7 +2169,7 @@ static void beiscsi_init_wrb_handle(struct beiscsi_hba *phba)
        num_cxn_wrb = (mem_descr_wrb->mem_array[idx].size) /
                      ((sizeof(struct iscsi_wrb) *
                        phba->params.wrbs_per_cxn));
-       for (index = 0; index < phba->params.cxns_per_ctrl; index += 2) {
+       for (index = 0; index < phba->params.cxns_per_ctrl * 2; index += 2) {
                pwrb_context = &phwi_ctrlr->wrb_context[index];
                if (num_cxn_wrb) {
                        for (j = 0; j < phba->params.wrbs_per_cxn; j++) {
index d4d31dc09088983e85a45ee5377f1500dcf182e9..87ec21280a37424c81a0c5815dcfcebc62bda80f 100644 (file)
@@ -498,8 +498,6 @@ struct hwi_async_entry {
        struct list_head data_busy_list;
 };
 
-#define BE_MIN_ASYNC_ENTRIES 128
-
 struct hwi_async_pdu_context {
        struct {
                struct be_bus_address pa_base;
@@ -540,7 +538,7 @@ struct hwi_async_pdu_context {
         * This is a varying size list! Do not add anything
         * after this entry!!
         */
-       struct hwi_async_entry async_entry[BE_MIN_ASYNC_ENTRIES];
+       struct hwi_async_entry async_entry[BE2_MAX_SESSIONS * 2];
 };
 
 #define PDUCQE_CODE_MASK       0x0000003F