提交 7dd97576 编写于 作者: J Jason Gunthorpe 提交者: Doug Ledford

IB/mlx4: Remove ib_get_dma_mr calls

The pd now has a local_dma_lkey member which completely replaces
ib_get_dma_mr, use it instead.
Signed-off-by: NJason Gunthorpe <jgunthorpe@obsidianresearch.com>
Signed-off-by: NDoug Ledford <dledford@redhat.com>
上级 77b1f996
...@@ -580,7 +580,7 @@ int mlx4_ib_send_to_slave(struct mlx4_ib_dev *dev, int slave, u8 port, ...@@ -580,7 +580,7 @@ int mlx4_ib_send_to_slave(struct mlx4_ib_dev *dev, int slave, u8 port,
list.addr = tun_qp->tx_ring[tun_tx_ix].buf.map; list.addr = tun_qp->tx_ring[tun_tx_ix].buf.map;
list.length = sizeof (struct mlx4_rcv_tunnel_mad); list.length = sizeof (struct mlx4_rcv_tunnel_mad);
list.lkey = tun_ctx->mr->lkey; list.lkey = tun_ctx->pd->local_dma_lkey;
wr.wr.ud.ah = ah; wr.wr.ud.ah = ah;
wr.wr.ud.port_num = port; wr.wr.ud.port_num = port;
...@@ -1133,7 +1133,7 @@ static int mlx4_ib_post_pv_qp_buf(struct mlx4_ib_demux_pv_ctx *ctx, ...@@ -1133,7 +1133,7 @@ static int mlx4_ib_post_pv_qp_buf(struct mlx4_ib_demux_pv_ctx *ctx,
sg_list.addr = tun_qp->ring[index].map; sg_list.addr = tun_qp->ring[index].map;
sg_list.length = size; sg_list.length = size;
sg_list.lkey = ctx->mr->lkey; sg_list.lkey = ctx->pd->local_dma_lkey;
recv_wr.next = NULL; recv_wr.next = NULL;
recv_wr.sg_list = &sg_list; recv_wr.sg_list = &sg_list;
...@@ -1244,7 +1244,7 @@ int mlx4_ib_send_to_wire(struct mlx4_ib_dev *dev, int slave, u8 port, ...@@ -1244,7 +1244,7 @@ int mlx4_ib_send_to_wire(struct mlx4_ib_dev *dev, int slave, u8 port,
list.addr = sqp->tx_ring[wire_tx_ix].buf.map; list.addr = sqp->tx_ring[wire_tx_ix].buf.map;
list.length = sizeof (struct mlx4_mad_snd_buf); list.length = sizeof (struct mlx4_mad_snd_buf);
list.lkey = sqp_ctx->mr->lkey; list.lkey = sqp_ctx->pd->local_dma_lkey;
wr.wr.ud.ah = ah; wr.wr.ud.ah = ah;
wr.wr.ud.port_num = port; wr.wr.ud.port_num = port;
...@@ -1827,19 +1827,12 @@ static int create_pv_resources(struct ib_device *ibdev, int slave, int port, ...@@ -1827,19 +1827,12 @@ static int create_pv_resources(struct ib_device *ibdev, int slave, int port,
goto err_cq; goto err_cq;
} }
ctx->mr = ib_get_dma_mr(ctx->pd, IB_ACCESS_LOCAL_WRITE);
if (IS_ERR(ctx->mr)) {
ret = PTR_ERR(ctx->mr);
pr_err("Couldn't get tunnel DMA MR (%d)\n", ret);
goto err_pd;
}
if (ctx->has_smi) { if (ctx->has_smi) {
ret = create_pv_sqp(ctx, IB_QPT_SMI, create_tun); ret = create_pv_sqp(ctx, IB_QPT_SMI, create_tun);
if (ret) { if (ret) {
pr_err("Couldn't create %s QP0 (%d)\n", pr_err("Couldn't create %s QP0 (%d)\n",
create_tun ? "tunnel for" : "", ret); create_tun ? "tunnel for" : "", ret);
goto err_mr; goto err_pd;
} }
} }
...@@ -1876,10 +1869,6 @@ static int create_pv_resources(struct ib_device *ibdev, int slave, int port, ...@@ -1876,10 +1869,6 @@ static int create_pv_resources(struct ib_device *ibdev, int slave, int port,
ib_destroy_qp(ctx->qp[0].qp); ib_destroy_qp(ctx->qp[0].qp);
ctx->qp[0].qp = NULL; ctx->qp[0].qp = NULL;
err_mr:
ib_dereg_mr(ctx->mr);
ctx->mr = NULL;
err_pd: err_pd:
ib_dealloc_pd(ctx->pd); ib_dealloc_pd(ctx->pd);
ctx->pd = NULL; ctx->pd = NULL;
...@@ -1916,8 +1905,6 @@ static void destroy_pv_resources(struct mlx4_ib_dev *dev, int slave, int port, ...@@ -1916,8 +1905,6 @@ static void destroy_pv_resources(struct mlx4_ib_dev *dev, int slave, int port,
ib_destroy_qp(ctx->qp[1].qp); ib_destroy_qp(ctx->qp[1].qp);
ctx->qp[1].qp = NULL; ctx->qp[1].qp = NULL;
mlx4_ib_free_pv_qp_bufs(ctx, IB_QPT_GSI, 1); mlx4_ib_free_pv_qp_bufs(ctx, IB_QPT_GSI, 1);
ib_dereg_mr(ctx->mr);
ctx->mr = NULL;
ib_dealloc_pd(ctx->pd); ib_dealloc_pd(ctx->pd);
ctx->pd = NULL; ctx->pd = NULL;
ib_destroy_cq(ctx->cq); ib_destroy_cq(ctx->cq);
...@@ -2050,8 +2037,6 @@ static void mlx4_ib_free_sqp_ctx(struct mlx4_ib_demux_pv_ctx *sqp_ctx) ...@@ -2050,8 +2037,6 @@ static void mlx4_ib_free_sqp_ctx(struct mlx4_ib_demux_pv_ctx *sqp_ctx)
ib_destroy_qp(sqp_ctx->qp[1].qp); ib_destroy_qp(sqp_ctx->qp[1].qp);
sqp_ctx->qp[1].qp = NULL; sqp_ctx->qp[1].qp = NULL;
mlx4_ib_free_pv_qp_bufs(sqp_ctx, IB_QPT_GSI, 0); mlx4_ib_free_pv_qp_bufs(sqp_ctx, IB_QPT_GSI, 0);
ib_dereg_mr(sqp_ctx->mr);
sqp_ctx->mr = NULL;
ib_dealloc_pd(sqp_ctx->pd); ib_dealloc_pd(sqp_ctx->pd);
sqp_ctx->pd = NULL; sqp_ctx->pd = NULL;
ib_destroy_cq(sqp_ctx->cq); ib_destroy_cq(sqp_ctx->cq);
......
...@@ -415,7 +415,6 @@ struct mlx4_ib_demux_pv_ctx { ...@@ -415,7 +415,6 @@ struct mlx4_ib_demux_pv_ctx {
struct ib_device *ib_dev; struct ib_device *ib_dev;
struct ib_cq *cq; struct ib_cq *cq;
struct ib_pd *pd; struct ib_pd *pd;
struct ib_mr *mr;
struct work_struct work; struct work_struct work;
struct workqueue_struct *wq; struct workqueue_struct *wq;
struct mlx4_ib_demux_pv_qp qp[2]; struct mlx4_ib_demux_pv_qp qp[2];
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册