diff options
| -rw-r--r-- | drivers/infiniband/ulp/iser/iscsi_iser.h | 14 | ||||
| -rw-r--r-- | drivers/infiniband/ulp/iser/iser_initiator.c | 18 | ||||
| -rw-r--r-- | drivers/infiniband/ulp/iser/iser_memory.c | 30 |
3 files changed, 29 insertions, 33 deletions
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.h b/drivers/infiniband/ulp/iser/iscsi_iser.h index 185d2ec0e3d8..5fd09636fbee 100644 --- a/drivers/infiniband/ulp/iser/iscsi_iser.h +++ b/drivers/infiniband/ulp/iser/iscsi_iser.h | |||
| @@ -247,18 +247,14 @@ struct iscsi_endpoint; | |||
| 247 | /** | 247 | /** |
| 248 | * struct iser_mem_reg - iSER memory registration info | 248 | * struct iser_mem_reg - iSER memory registration info |
| 249 | * | 249 | * |
| 250 | * @lkey: MR local key | 250 | * @sge: memory region sg element |
| 251 | * @rkey: MR remote key | 251 | * @rkey: memory region remote key |
| 252 | * @va: MR start address (buffer va) | ||
| 253 | * @len: MR length | ||
| 254 | * @mem_h: pointer to registration context (FMR/Fastreg) | 252 | * @mem_h: pointer to registration context (FMR/Fastreg) |
| 255 | */ | 253 | */ |
| 256 | struct iser_mem_reg { | 254 | struct iser_mem_reg { |
| 257 | u32 lkey; | 255 | struct ib_sge sge; |
| 258 | u32 rkey; | 256 | u32 rkey; |
| 259 | u64 va; | 257 | void *mem_h; |
| 260 | u64 len; | ||
| 261 | void *mem_h; | ||
| 262 | }; | 258 | }; |
| 263 | 259 | ||
| 264 | enum iser_desc_type { | 260 | enum iser_desc_type { |
diff --git a/drivers/infiniband/ulp/iser/iser_initiator.c b/drivers/infiniband/ulp/iser/iser_initiator.c index 420a613fe9f5..b2e3b77340b5 100644 --- a/drivers/infiniband/ulp/iser/iser_initiator.c +++ b/drivers/infiniband/ulp/iser/iser_initiator.c | |||
| @@ -82,11 +82,11 @@ static int iser_prepare_read_cmd(struct iscsi_task *task) | |||
| 82 | 82 | ||
| 83 | hdr->flags |= ISER_RSV; | 83 | hdr->flags |= ISER_RSV; |
| 84 | hdr->read_stag = cpu_to_be32(mem_reg->rkey); | 84 | hdr->read_stag = cpu_to_be32(mem_reg->rkey); |
| 85 | hdr->read_va = cpu_to_be64(mem_reg->va); | 85 | hdr->read_va = cpu_to_be64(mem_reg->sge.addr); |
| 86 | 86 | ||
| 87 | iser_dbg("Cmd itt:%d READ tags RKEY:%#.4X VA:%#llX\n", | 87 | iser_dbg("Cmd itt:%d READ tags RKEY:%#.4X VA:%#llX\n", |
| 88 | task->itt, mem_reg->rkey, | 88 | task->itt, mem_reg->rkey, |
| 89 | (unsigned long long)mem_reg->va); | 89 | (unsigned long long)mem_reg->sge.addr); |
| 90 | 90 | ||
| 91 | return 0; | 91 | return 0; |
| 92 | } | 92 | } |
| @@ -139,20 +139,20 @@ iser_prepare_write_cmd(struct iscsi_task *task, | |||
| 139 | if (unsol_sz < edtl) { | 139 | if (unsol_sz < edtl) { |
| 140 | hdr->flags |= ISER_WSV; | 140 | hdr->flags |= ISER_WSV; |
| 141 | hdr->write_stag = cpu_to_be32(mem_reg->rkey); | 141 | hdr->write_stag = cpu_to_be32(mem_reg->rkey); |
| 142 | hdr->write_va = cpu_to_be64(mem_reg->va + unsol_sz); | 142 | hdr->write_va = cpu_to_be64(mem_reg->sge.addr + unsol_sz); |
| 143 | 143 | ||
| 144 | iser_dbg("Cmd itt:%d, WRITE tags, RKEY:%#.4X " | 144 | iser_dbg("Cmd itt:%d, WRITE tags, RKEY:%#.4X " |
| 145 | "VA:%#llX + unsol:%d\n", | 145 | "VA:%#llX + unsol:%d\n", |
| 146 | task->itt, mem_reg->rkey, | 146 | task->itt, mem_reg->rkey, |
| 147 | (unsigned long long)mem_reg->va, unsol_sz); | 147 | (unsigned long long)mem_reg->sge.addr, unsol_sz); |
| 148 | } | 148 | } |
| 149 | 149 | ||
| 150 | if (imm_sz > 0) { | 150 | if (imm_sz > 0) { |
| 151 | iser_dbg("Cmd itt:%d, WRITE, adding imm.data sz: %d\n", | 151 | iser_dbg("Cmd itt:%d, WRITE, adding imm.data sz: %d\n", |
| 152 | task->itt, imm_sz); | 152 | task->itt, imm_sz); |
| 153 | tx_dsg->addr = mem_reg->va; | 153 | tx_dsg->addr = mem_reg->sge.addr; |
| 154 | tx_dsg->length = imm_sz; | 154 | tx_dsg->length = imm_sz; |
| 155 | tx_dsg->lkey = mem_reg->lkey; | 155 | tx_dsg->lkey = mem_reg->sge.lkey; |
| 156 | iser_task->desc.num_sge = 2; | 156 | iser_task->desc.num_sge = 2; |
| 157 | } | 157 | } |
| 158 | 158 | ||
| @@ -479,9 +479,9 @@ int iser_send_data_out(struct iscsi_conn *conn, | |||
| 479 | 479 | ||
| 480 | mem_reg = &iser_task->rdma_reg[ISER_DIR_OUT]; | 480 | mem_reg = &iser_task->rdma_reg[ISER_DIR_OUT]; |
| 481 | tx_dsg = &tx_desc->tx_sg[1]; | 481 | tx_dsg = &tx_desc->tx_sg[1]; |
| 482 | tx_dsg->addr = mem_reg->va + buf_offset; | 482 | tx_dsg->addr = mem_reg->sge.addr + buf_offset; |
| 483 | tx_dsg->length = data_seg_len; | 483 | tx_dsg->length = data_seg_len; |
| 484 | tx_dsg->lkey = mem_reg->lkey; | 484 | tx_dsg->lkey = mem_reg->sge.lkey; |
| 485 | tx_desc->num_sge = 2; | 485 | tx_desc->num_sge = 2; |
| 486 | 486 | ||
| 487 | if (buf_offset + data_seg_len > iser_task->data[ISER_DIR_OUT].data_len) { | 487 | if (buf_offset + data_seg_len > iser_task->data[ISER_DIR_OUT].data_len) { |
diff --git a/drivers/infiniband/ulp/iser/iser_memory.c b/drivers/infiniband/ulp/iser/iser_memory.c index 45f512043ef5..40d22d5c3fac 100644 --- a/drivers/infiniband/ulp/iser/iser_memory.c +++ b/drivers/infiniband/ulp/iser/iser_memory.c | |||
| @@ -400,10 +400,10 @@ int iser_reg_page_vec(struct iscsi_iser_task *iser_task, | |||
| 400 | return ret; | 400 | return ret; |
| 401 | } | 401 | } |
| 402 | 402 | ||
| 403 | mem_reg->lkey = fmr->fmr->lkey; | 403 | mem_reg->sge.lkey = fmr->fmr->lkey; |
| 404 | mem_reg->rkey = fmr->fmr->rkey; | 404 | mem_reg->rkey = fmr->fmr->rkey; |
| 405 | mem_reg->va = page_vec->pages[0] + page_vec->offset; | 405 | mem_reg->sge.addr = page_vec->pages[0] + page_vec->offset; |
| 406 | mem_reg->len = page_vec->data_size; | 406 | mem_reg->sge.length = page_vec->data_size; |
| 407 | mem_reg->mem_h = fmr; | 407 | mem_reg->mem_h = fmr; |
| 408 | 408 | ||
| 409 | return 0; | 409 | return 0; |
| @@ -479,17 +479,17 @@ int iser_reg_rdma_mem_fmr(struct iscsi_iser_task *iser_task, | |||
| 479 | if (mem->dma_nents == 1) { | 479 | if (mem->dma_nents == 1) { |
| 480 | sg = mem->sg; | 480 | sg = mem->sg; |
| 481 | 481 | ||
| 482 | mem_reg->lkey = device->mr->lkey; | 482 | mem_reg->sge.lkey = device->mr->lkey; |
| 483 | mem_reg->rkey = device->mr->rkey; | 483 | mem_reg->rkey = device->mr->rkey; |
| 484 | mem_reg->len = ib_sg_dma_len(ibdev, &sg[0]); | 484 | mem_reg->sge.length = ib_sg_dma_len(ibdev, &sg[0]); |
| 485 | mem_reg->va = ib_sg_dma_address(ibdev, &sg[0]); | 485 | mem_reg->sge.addr = ib_sg_dma_address(ibdev, &sg[0]); |
| 486 | 486 | ||
| 487 | iser_dbg("PHYSICAL Mem.register: lkey: 0x%08X rkey: 0x%08X " | 487 | iser_dbg("PHYSICAL Mem.register: lkey: 0x%08X rkey: 0x%08X " |
| 488 | "va: 0x%08lX sz: %ld]\n", | 488 | "va: 0x%08lX sz: %ld]\n", |
| 489 | (unsigned int)mem_reg->lkey, | 489 | (unsigned int)mem_reg->sge.lkey, |
| 490 | (unsigned int)mem_reg->rkey, | 490 | (unsigned int)mem_reg->rkey, |
| 491 | (unsigned long)mem_reg->va, | 491 | (unsigned long)mem_reg->sge.addr, |
| 492 | (unsigned long)mem_reg->len); | 492 | (unsigned long)mem_reg->sge.length); |
| 493 | } else { /* use FMR for multiple dma entries */ | 493 | } else { /* use FMR for multiple dma entries */ |
| 494 | err = iser_reg_page_vec(iser_task, mem, ib_conn->fmr.page_vec, | 494 | err = iser_reg_page_vec(iser_task, mem, ib_conn->fmr.page_vec, |
| 495 | mem_reg); | 495 | mem_reg); |
| @@ -799,19 +799,19 @@ int iser_reg_rdma_mem_fastreg(struct iscsi_iser_task *iser_task, | |||
| 799 | } | 799 | } |
| 800 | desc->reg_indicators |= ISER_FASTREG_PROTECTED; | 800 | desc->reg_indicators |= ISER_FASTREG_PROTECTED; |
| 801 | 801 | ||
| 802 | mem_reg->lkey = sig_sge.lkey; | 802 | mem_reg->sge.lkey = sig_sge.lkey; |
| 803 | mem_reg->rkey = desc->pi_ctx->sig_mr->rkey; | 803 | mem_reg->rkey = desc->pi_ctx->sig_mr->rkey; |
| 804 | mem_reg->va = sig_sge.addr; | 804 | mem_reg->sge.addr = sig_sge.addr; |
| 805 | mem_reg->len = sig_sge.length; | 805 | mem_reg->sge.length = sig_sge.length; |
| 806 | } else { | 806 | } else { |
| 807 | if (desc) | 807 | if (desc) |
| 808 | mem_reg->rkey = desc->data_mr->rkey; | 808 | mem_reg->rkey = desc->data_mr->rkey; |
| 809 | else | 809 | else |
| 810 | mem_reg->rkey = device->mr->rkey; | 810 | mem_reg->rkey = device->mr->rkey; |
| 811 | 811 | ||
| 812 | mem_reg->lkey = data_sge.lkey; | 812 | mem_reg->sge.lkey = data_sge.lkey; |
| 813 | mem_reg->va = data_sge.addr; | 813 | mem_reg->sge.addr = data_sge.addr; |
| 814 | mem_reg->len = data_sge.length; | 814 | mem_reg->sge.length = data_sge.length; |
| 815 | } | 815 | } |
| 816 | 816 | ||
| 817 | return 0; | 817 | return 0; |
