提交 90622db3 编写于 作者: J Jayamohan Kallickal 提交者: James Bottomley

[SCSI] be2iscsi: Fix SGL Initilization and posting Pages for Dual Chute

Initialization of SGL and related PAGE posting is to be done for the chute.
Based on configuration value of each Chute,SGL initialization and page posting
is done.

For BE-X family iSCSI protocol is loaded only on single chute
Signed-off-by: NJohn Soni Jose <sony.john-n@emulex.com>
Signed-off-by: NJayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
上级 a129d92f
...@@ -3450,6 +3450,10 @@ beiscsi_post_pages(struct beiscsi_hba *phba) ...@@ -3450,6 +3450,10 @@ beiscsi_post_pages(struct beiscsi_hba *phba)
mem_descr += HWI_MEM_SGE; mem_descr += HWI_MEM_SGE;
pm_arr = mem_descr->mem_array; pm_arr = mem_descr->mem_array;
for (ulp_num = 0; ulp_num < BEISCSI_ULP_COUNT; ulp_num++)
if (test_bit(ulp_num, &phba->fw_config.ulp_supported))
break;
page_offset = (sizeof(struct iscsi_sge) * phba->params.num_sge_per_io * page_offset = (sizeof(struct iscsi_sge) * phba->params.num_sge_per_io *
phba->fw_config.iscsi_icd_start[ulp_num]) / PAGE_SIZE; phba->fw_config.iscsi_icd_start[ulp_num]) / PAGE_SIZE;
for (i = 0; i < mem_descr->num_elements; i++) { for (i = 0; i < mem_descr->num_elements; i++) {
...@@ -3946,7 +3950,8 @@ static int beiscsi_init_sgl_handle(struct beiscsi_hba *phba) ...@@ -3946,7 +3950,8 @@ static int beiscsi_init_sgl_handle(struct beiscsi_hba *phba)
struct be_mem_descriptor *mem_descr_sglh, *mem_descr_sg; struct be_mem_descriptor *mem_descr_sglh, *mem_descr_sg;
struct sgl_handle *psgl_handle; struct sgl_handle *psgl_handle;
struct iscsi_sge *pfrag; struct iscsi_sge *pfrag;
unsigned int arr_index, i, idx, ulp_num = 0; unsigned int arr_index, i, idx;
unsigned int ulp_icd_start, ulp_num = 0;
phba->io_sgl_hndl_avbl = 0; phba->io_sgl_hndl_avbl = 0;
phba->eh_sgl_hndl_avbl = 0; phba->eh_sgl_hndl_avbl = 0;
...@@ -4013,6 +4018,12 @@ static int beiscsi_init_sgl_handle(struct beiscsi_hba *phba) ...@@ -4013,6 +4018,12 @@ static int beiscsi_init_sgl_handle(struct beiscsi_hba *phba)
"\n BM_%d : mem_descr_sg->num_elements=%d\n", "\n BM_%d : mem_descr_sg->num_elements=%d\n",
mem_descr_sg->num_elements); mem_descr_sg->num_elements);
for (ulp_num = 0; ulp_num < BEISCSI_ULP_COUNT; ulp_num++)
if (test_bit(ulp_num, &phba->fw_config.ulp_supported))
break;
ulp_icd_start = phba->fw_config.iscsi_icd_start[ulp_num];
arr_index = 0; arr_index = 0;
idx = 0; idx = 0;
while (idx < mem_descr_sg->num_elements) { while (idx < mem_descr_sg->num_elements) {
...@@ -4031,9 +4042,7 @@ static int beiscsi_init_sgl_handle(struct beiscsi_hba *phba) ...@@ -4031,9 +4042,7 @@ static int beiscsi_init_sgl_handle(struct beiscsi_hba *phba)
AMAP_SET_BITS(struct amap_iscsi_sge, addr_hi, pfrag, 0); AMAP_SET_BITS(struct amap_iscsi_sge, addr_hi, pfrag, 0);
AMAP_SET_BITS(struct amap_iscsi_sge, addr_lo, pfrag, 0); AMAP_SET_BITS(struct amap_iscsi_sge, addr_lo, pfrag, 0);
pfrag += phba->params.num_sge_per_io; pfrag += phba->params.num_sge_per_io;
psgl_handle->sgl_index = psgl_handle->sgl_index = ulp_icd_start + arr_index++;
phba->fw_config.iscsi_icd_start[ulp_num] +
arr_index++;
} }
idx++; idx++;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册