IB/ipoib: Remove ib_get_dma_mr calls
authorJason Gunthorpe <jgunthorpe@obsidianresearch.com>
Thu, 30 Jul 2015 23:22:17 +0000 (17:22 -0600)
committerDoug Ledford <dledford@redhat.com>
Sun, 30 Aug 2015 22:12:34 +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>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/ulp/ipoib/ipoib.h
drivers/infiniband/ulp/ipoib/ipoib_cm.c
drivers/infiniband/ulp/ipoib/ipoib_verbs.c

index 79859c4d43c9c572f4946a364b87fdc74acf40a3..ca2873698d75444066312640a1eb84dc5e2190db 100644 (file)
@@ -342,7 +342,6 @@ struct ipoib_dev_priv {
        u16               pkey;
        u16               pkey_index;
        struct ib_pd     *pd;
-       struct ib_mr     *mr;
        struct ib_cq     *recv_cq;
        struct ib_cq     *send_cq;
        struct ib_qp     *qp;
index 9d321575d90e2718e9c9464d73c462dc48157dd8..c78dc1638030093298c28e13605c86845ce1fcfc 100644 (file)
@@ -332,7 +332,7 @@ static void ipoib_cm_init_rx_wr(struct net_device *dev,
        int i;
 
        for (i = 0; i < priv->cm.num_frags; ++i)
-               sge[i].lkey = priv->mr->lkey;
+               sge[i].lkey = priv->pd->local_dma_lkey;
 
        sge[0].length = IPOIB_CM_HEAD_SIZE;
        for (i = 1; i < priv->cm.num_frags; ++i)
index 851c8219d50104105ec8d97a3ba743cb6f59626b..8c451983d8a5ad548fbe6f65ed95c2a735bac099 100644 (file)
@@ -152,12 +152,6 @@ int ipoib_transport_dev_init(struct net_device *dev, struct ib_device *ca)
                return -ENODEV;
        }
 
-       priv->mr = ib_get_dma_mr(priv->pd, IB_ACCESS_LOCAL_WRITE);
-       if (IS_ERR(priv->mr)) {
-               printk(KERN_WARNING "%s: ib_get_dma_mr failed\n", ca->name);
-               goto out_free_pd;
-       }
-
        /*
         * the various IPoIB tasks assume they will never race against
         * themselves, so always use a single thread workqueue
@@ -165,7 +159,7 @@ int ipoib_transport_dev_init(struct net_device *dev, struct ib_device *ca)
        priv->wq = create_singlethread_workqueue("ipoib_wq");
        if (!priv->wq) {
                printk(KERN_WARNING "ipoib: failed to allocate device WQ\n");
-               goto out_free_mr;
+               goto out_free_pd;
        }
 
        size = ipoib_recvq_size + 1;
@@ -225,13 +219,13 @@ int ipoib_transport_dev_init(struct net_device *dev, struct ib_device *ca)
        priv->dev->dev_addr[3] = (priv->qp->qp_num      ) & 0xff;
 
        for (i = 0; i < MAX_SKB_FRAGS + 1; ++i)
-               priv->tx_sge[i].lkey = priv->mr->lkey;
+               priv->tx_sge[i].lkey = priv->pd->local_dma_lkey;
 
        priv->tx_wr.opcode      = IB_WR_SEND;
        priv->tx_wr.sg_list     = priv->tx_sge;
        priv->tx_wr.send_flags  = IB_SEND_SIGNALED;
 
-       priv->rx_sge[0].lkey = priv->mr->lkey;
+       priv->rx_sge[0].lkey = priv->pd->local_dma_lkey;
 
        priv->rx_sge[0].length = IPOIB_UD_BUF_SIZE(priv->max_ib_mtu);
        priv->rx_wr.num_sge = 1;
@@ -254,9 +248,6 @@ out_free_wq:
        destroy_workqueue(priv->wq);
        priv->wq = NULL;
 
-out_free_mr:
-       ib_dereg_mr(priv->mr);
-
 out_free_pd:
        ib_dealloc_pd(priv->pd);
 
@@ -289,9 +280,6 @@ void ipoib_transport_dev_cleanup(struct net_device *dev)
                priv->wq = NULL;
        }
 
-       if (ib_dereg_mr(priv->mr))
-               ipoib_warn(priv, "ib_dereg_mr failed\n");
-
        if (ib_dealloc_pd(priv->pd))
                ipoib_warn(priv, "ib_dealloc_pd failed\n");