RDMA/rw: Introduce rdma_rw_inv_key helper
authorIsrael Rukshin <israelr@mellanox.com>
Tue, 11 Jun 2019 15:52:52 +0000 (18:52 +0300)
committerJason Gunthorpe <jgg@mellanox.com>
Mon, 24 Jun 2019 14:49:27 +0000 (11:49 -0300)
This is a preparation for adding new signature API to the rw-API.

Signed-off-by: Israel Rukshin <israelr@mellanox.com>
Suggested-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/rw.c

index b45b49a2ccfcde98b70459458a4b0154d09cbd49..f87f0de82e244b12d2251295d1ad6cab289e1e79 100644 (file)
@@ -65,6 +65,22 @@ static inline u32 rdma_rw_fr_page_list_len(struct ib_device *dev)
        return min_t(u32, dev->attrs.max_fast_reg_page_list_len, 256);
 }
 
+static inline int rdma_rw_inv_key(struct rdma_rw_reg_ctx *reg)
+{
+       int count = 0;
+
+       if (reg->mr->need_inval) {
+               reg->inv_wr.opcode = IB_WR_LOCAL_INV;
+               reg->inv_wr.ex.invalidate_rkey = reg->mr->lkey;
+               reg->inv_wr.next = &reg->reg_wr.wr;
+               count++;
+       } else {
+               reg->inv_wr.next = NULL;
+       }
+
+       return count;
+}
+
 /* Caller must have zero-initialized *reg. */
 static int rdma_rw_init_one_mr(struct ib_qp *qp, u8 port_num,
                struct rdma_rw_reg_ctx *reg, struct scatterlist *sg,
@@ -78,14 +94,7 @@ static int rdma_rw_init_one_mr(struct ib_qp *qp, u8 port_num,
        if (!reg->mr)
                return -EAGAIN;
 
-       if (reg->mr->need_inval) {
-               reg->inv_wr.opcode = IB_WR_LOCAL_INV;
-               reg->inv_wr.ex.invalidate_rkey = reg->mr->lkey;
-               reg->inv_wr.next = &reg->reg_wr.wr;
-               count++;
-       } else {
-               reg->inv_wr.next = NULL;
-       }
+       count += rdma_rw_inv_key(reg);
 
        ret = ib_map_mr_sg(reg->mr, sg, nents, &offset, PAGE_SIZE);
        if (ret < 0 || ret < nents) {