ib_srpt: Remove ib_get_dma_mr calls
authorJason Gunthorpe <jgunthorpe@obsidianresearch.com>
Thu, 30 Jul 2015 23:22:24 +0000 (17:22 -0600)
committerDoug Ledford <dledford@redhat.com>
Sun, 30 Aug 2015 22:12:35 +0000 (18:12 -0400)
The pd now has a local_dma_lkey member which completely replaces
ib_get_dma_mr, use it instead.

Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Reviewed-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/ulp/srpt/ib_srpt.c
drivers/infiniband/ulp/srpt/ib_srpt.h

index 3ab015b..f6fe041 100644 (file)
@@ -783,7 +783,7 @@ static int srpt_post_recv(struct srpt_device *sdev,
 
        list.addr = ioctx->ioctx.dma;
        list.length = srp_max_req_size;
-       list.lkey = sdev->mr->lkey;
+       list.lkey = sdev->pd->local_dma_lkey;
 
        wr.next = NULL;
        wr.sg_list = &list;
@@ -818,7 +818,7 @@ static int srpt_post_send(struct srpt_rdma_ch *ch,
 
        list.addr = ioctx->ioctx.dma;
        list.length = len;
-       list.lkey = sdev->mr->lkey;
+       list.lkey = sdev->pd->local_dma_lkey;
 
        wr.next = NULL;
        wr.wr_id = encode_wr_id(SRPT_SEND, ioctx->ioctx.index);
@@ -1206,7 +1206,7 @@ static int srpt_map_sg_to_ib_sge(struct srpt_rdma_ch *ch,
 
                while (rsize > 0 && tsize > 0) {
                        sge->addr = dma_addr;
-                       sge->lkey = ch->sport->sdev->mr->lkey;
+                       sge->lkey = ch->sport->sdev->pd->local_dma_lkey;
 
                        if (rsize >= dma_len) {
                                sge->length =
@@ -3211,10 +3211,6 @@ static void srpt_add_one(struct ib_device *device)
        if (IS_ERR(sdev->pd))
                goto free_dev;
 
-       sdev->mr = ib_get_dma_mr(sdev->pd, IB_ACCESS_LOCAL_WRITE);
-       if (IS_ERR(sdev->mr))
-               goto err_pd;
-
        sdev->srq_size = min(srpt_srq_size, sdev->dev_attr.max_srq_wr);
 
        srq_attr.event_handler = srpt_srq_event;
@@ -3226,7 +3222,7 @@ static void srpt_add_one(struct ib_device *device)
 
        sdev->srq = ib_create_srq(sdev->pd, &srq_attr);
        if (IS_ERR(sdev->srq))
-               goto err_mr;
+               goto err_pd;
 
        pr_debug("%s: create SRQ #wr= %d max_allow=%d dev= %s\n",
                 __func__, sdev->srq_size, sdev->dev_attr.max_srq_wr,
@@ -3311,8 +3307,6 @@ err_cm:
        ib_destroy_cm_id(sdev->cm_id);
 err_srq:
        ib_destroy_srq(sdev->srq);
-err_mr:
-       ib_dereg_mr(sdev->mr);
 err_pd:
        ib_dealloc_pd(sdev->pd);
 free_dev:
@@ -3357,7 +3351,6 @@ static void srpt_remove_one(struct ib_device *device, void *client_data)
        srpt_release_sdev(sdev);
 
        ib_destroy_srq(sdev->srq);
-       ib_dereg_mr(sdev->mr);
        ib_dealloc_pd(sdev->pd);
 
        srpt_free_ioctx_ring((struct srpt_ioctx **)sdev->ioctx_ring, sdev,
index 21f8df6..5faad8a 100644 (file)
@@ -393,7 +393,6 @@ struct srpt_port {
 struct srpt_device {
        struct ib_device        *device;
        struct ib_pd            *pd;
-       struct ib_mr            *mr;
        struct ib_srq           *srq;
        struct ib_cm_id         *cm_id;
        struct ib_device_attr   dev_attr;