diff options
Diffstat (limited to 'net/9p/trans_rdma.c')
-rw-r--r-- | net/9p/trans_rdma.c | 26 |
1 files changed, 2 insertions, 24 deletions
diff --git a/net/9p/trans_rdma.c b/net/9p/trans_rdma.c index 37a78d20c0f6..ba1210253f5e 100644 --- a/net/9p/trans_rdma.c +++ b/net/9p/trans_rdma.c | |||
@@ -94,8 +94,6 @@ struct p9_trans_rdma { | |||
94 | struct ib_pd *pd; | 94 | struct ib_pd *pd; |
95 | struct ib_qp *qp; | 95 | struct ib_qp *qp; |
96 | struct ib_cq *cq; | 96 | struct ib_cq *cq; |
97 | struct ib_mr *dma_mr; | ||
98 | u32 lkey; | ||
99 | long timeout; | 97 | long timeout; |
100 | int sq_depth; | 98 | int sq_depth; |
101 | struct semaphore sq_sem; | 99 | struct semaphore sq_sem; |
@@ -382,9 +380,6 @@ static void rdma_destroy_trans(struct p9_trans_rdma *rdma) | |||
382 | if (!rdma) | 380 | if (!rdma) |
383 | return; | 381 | return; |
384 | 382 | ||
385 | if (rdma->dma_mr && !IS_ERR(rdma->dma_mr)) | ||
386 | ib_dereg_mr(rdma->dma_mr); | ||
387 | |||
388 | if (rdma->qp && !IS_ERR(rdma->qp)) | 383 | if (rdma->qp && !IS_ERR(rdma->qp)) |
389 | ib_destroy_qp(rdma->qp); | 384 | ib_destroy_qp(rdma->qp); |
390 | 385 | ||
@@ -415,7 +410,7 @@ post_recv(struct p9_client *client, struct p9_rdma_context *c) | |||
415 | 410 | ||
416 | sge.addr = c->busa; | 411 | sge.addr = c->busa; |
417 | sge.length = client->msize; | 412 | sge.length = client->msize; |
418 | sge.lkey = rdma->lkey; | 413 | sge.lkey = rdma->pd->local_dma_lkey; |
419 | 414 | ||
420 | wr.next = NULL; | 415 | wr.next = NULL; |
421 | c->wc_op = IB_WC_RECV; | 416 | c->wc_op = IB_WC_RECV; |
@@ -506,7 +501,7 @@ dont_need_post_recv: | |||
506 | 501 | ||
507 | sge.addr = c->busa; | 502 | sge.addr = c->busa; |
508 | sge.length = c->req->tc->size; | 503 | sge.length = c->req->tc->size; |
509 | sge.lkey = rdma->lkey; | 504 | sge.lkey = rdma->pd->local_dma_lkey; |
510 | 505 | ||
511 | wr.next = NULL; | 506 | wr.next = NULL; |
512 | c->wc_op = IB_WC_SEND; | 507 | c->wc_op = IB_WC_SEND; |
@@ -647,7 +642,6 @@ rdma_create_trans(struct p9_client *client, const char *addr, char *args) | |||
647 | struct p9_trans_rdma *rdma; | 642 | struct p9_trans_rdma *rdma; |
648 | struct rdma_conn_param conn_param; | 643 | struct rdma_conn_param conn_param; |
649 | struct ib_qp_init_attr qp_attr; | 644 | struct ib_qp_init_attr qp_attr; |
650 | struct ib_device_attr devattr; | ||
651 | struct ib_cq_init_attr cq_attr = {}; | 645 | struct ib_cq_init_attr cq_attr = {}; |
652 | 646 | ||
653 | /* Parse the transport specific mount options */ | 647 | /* Parse the transport specific mount options */ |
@@ -700,11 +694,6 @@ rdma_create_trans(struct p9_client *client, const char *addr, char *args) | |||
700 | if (err || (rdma->state != P9_RDMA_ROUTE_RESOLVED)) | 694 | if (err || (rdma->state != P9_RDMA_ROUTE_RESOLVED)) |
701 | goto error; | 695 | goto error; |
702 | 696 | ||
703 | /* Query the device attributes */ | ||
704 | err = ib_query_device(rdma->cm_id->device, &devattr); | ||
705 | if (err) | ||
706 | goto error; | ||
707 | |||
708 | /* Create the Completion Queue */ | 697 | /* Create the Completion Queue */ |
709 | cq_attr.cqe = opts.sq_depth + opts.rq_depth + 1; | 698 | cq_attr.cqe = opts.sq_depth + opts.rq_depth + 1; |
710 | rdma->cq = ib_create_cq(rdma->cm_id->device, cq_comp_handler, | 699 | rdma->cq = ib_create_cq(rdma->cm_id->device, cq_comp_handler, |
@@ -719,17 +708,6 @@ rdma_create_trans(struct p9_client *client, const char *addr, char *args) | |||
719 | if (IS_ERR(rdma->pd)) | 708 | if (IS_ERR(rdma->pd)) |
720 | goto error; | 709 | goto error; |
721 | 710 | ||
722 | /* Cache the DMA lkey in the transport */ | ||
723 | rdma->dma_mr = NULL; | ||
724 | if (devattr.device_cap_flags & IB_DEVICE_LOCAL_DMA_LKEY) | ||
725 | rdma->lkey = rdma->cm_id->device->local_dma_lkey; | ||
726 | else { | ||
727 | rdma->dma_mr = ib_get_dma_mr(rdma->pd, IB_ACCESS_LOCAL_WRITE); | ||
728 | if (IS_ERR(rdma->dma_mr)) | ||
729 | goto error; | ||
730 | rdma->lkey = rdma->dma_mr->lkey; | ||
731 | } | ||
732 | |||
733 | /* Create the Queue Pair */ | 711 | /* Create the Queue Pair */ |
734 | memset(&qp_attr, 0, sizeof qp_attr); | 712 | memset(&qp_attr, 0, sizeof qp_attr); |
735 | qp_attr.event_handler = qp_event_handler; | 713 | qp_attr.event_handler = qp_event_handler; |