aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSagi Grimberg <sagig@mellanox.com>2014-01-09 11:40:54 -0500
committerNicholas Bellinger <nab@linux-iscsi.org>2014-01-18 21:22:09 -0500
commit9bd626e79df67b2ba3b0c91a4640ab7bca1af04d (patch)
tree1e10821887232d8c104fc58955874ad3fef5bf69
parentdc87a90f5d61d7f01cfb63d92d5eaa27718e5b19 (diff)
IB/isert: pass scatterlist instead of cmd to fast_reg_mr routine
This routine may help for protection registration as well. This patch does not change any functionality. Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
-rw-r--r--drivers/infiniband/ulp/isert/ib_isert.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert.c
index 9ef919341557..421182be6e3f 100644
--- a/drivers/infiniband/ulp/isert/ib_isert.c
+++ b/drivers/infiniband/ulp/isert/ib_isert.c
@@ -2169,26 +2169,22 @@ isert_map_fr_pagelist(struct ib_device *ib_dev,
2169 2169
2170static int 2170static int
2171isert_fast_reg_mr(struct fast_reg_descriptor *fr_desc, 2171isert_fast_reg_mr(struct fast_reg_descriptor *fr_desc,
2172 struct isert_cmd *isert_cmd, struct isert_conn *isert_conn, 2172 struct isert_conn *isert_conn, struct scatterlist *sg_start,
2173 struct ib_sge *ib_sge, u32 offset, unsigned int data_len) 2173 struct ib_sge *ib_sge, u32 sg_nents, u32 offset,
2174 unsigned int data_len)
2174{ 2175{
2175 struct iscsi_cmd *cmd = isert_cmd->iscsi_cmd;
2176 struct ib_device *ib_dev = isert_conn->conn_cm_id->device; 2176 struct ib_device *ib_dev = isert_conn->conn_cm_id->device;
2177 struct scatterlist *sg_start;
2178 u32 sg_off, page_off;
2179 struct ib_send_wr fr_wr, inv_wr; 2177 struct ib_send_wr fr_wr, inv_wr;
2180 struct ib_send_wr *bad_wr, *wr = NULL; 2178 struct ib_send_wr *bad_wr, *wr = NULL;
2179 int ret, pagelist_len;
2180 u32 page_off;
2181 u8 key; 2181 u8 key;
2182 int ret, sg_nents, pagelist_len;
2183 2182
2184 sg_off = offset / PAGE_SIZE; 2183 sg_nents = min_t(unsigned int, sg_nents, ISCSI_ISER_SG_TABLESIZE);
2185 sg_start = &cmd->se_cmd.t_data_sg[sg_off];
2186 sg_nents = min_t(unsigned int, cmd->se_cmd.t_data_nents - sg_off,
2187 ISCSI_ISER_SG_TABLESIZE);
2188 page_off = offset % PAGE_SIZE; 2184 page_off = offset % PAGE_SIZE;
2189 2185
2190 pr_debug("Cmd: %p use fr_desc %p sg_nents %d sg_off %d offset %u\n", 2186 pr_debug("Use fr_desc %p sg_nents %d offset %u\n",
2191 isert_cmd, fr_desc, sg_nents, sg_off, offset); 2187 fr_desc, sg_nents, offset);
2192 2188
2193 pagelist_len = isert_map_fr_pagelist(ib_dev, sg_start, sg_nents, 2189 pagelist_len = isert_map_fr_pagelist(ib_dev, sg_start, sg_nents,
2194 &fr_desc->data_frpl->page_list[0]); 2190 &fr_desc->data_frpl->page_list[0]);
@@ -2257,9 +2253,9 @@ isert_reg_rdma(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
2257 if (wr->iser_ib_op == ISER_IB_RDMA_WRITE) { 2253 if (wr->iser_ib_op == ISER_IB_RDMA_WRITE) {
2258 data_left = se_cmd->data_length; 2254 data_left = se_cmd->data_length;
2259 } else { 2255 } else {
2260 sg_off = cmd->write_data_done / PAGE_SIZE;
2261 data_left = se_cmd->data_length - cmd->write_data_done;
2262 offset = cmd->write_data_done; 2256 offset = cmd->write_data_done;
2257 sg_off = offset / PAGE_SIZE;
2258 data_left = se_cmd->data_length - cmd->write_data_done;
2263 isert_cmd->tx_desc.isert_cmd = isert_cmd; 2259 isert_cmd->tx_desc.isert_cmd = isert_cmd;
2264 } 2260 }
2265 2261
@@ -2323,8 +2319,8 @@ isert_reg_rdma(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
2323 spin_unlock_irqrestore(&isert_conn->conn_lock, flags); 2319 spin_unlock_irqrestore(&isert_conn->conn_lock, flags);
2324 wr->fr_desc = fr_desc; 2320 wr->fr_desc = fr_desc;
2325 2321
2326 ret = isert_fast_reg_mr(fr_desc, isert_cmd, isert_conn, 2322 ret = isert_fast_reg_mr(fr_desc, isert_conn, sg_start,
2327 ib_sge, offset, data_len); 2323 ib_sge, sg_nents, offset, data_len);
2328 if (ret) { 2324 if (ret) {
2329 list_add_tail(&fr_desc->list, &isert_conn->conn_fr_pool); 2325 list_add_tail(&fr_desc->list, &isert_conn->conn_fr_pool);
2330 goto unmap_sg; 2326 goto unmap_sg;