diff options
author | Bart Van Assche <bart.vanassche@wdc.com> | 2017-10-11 10:27:24 -0700 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2017-10-18 10:49:54 -0400 |
commit | 74333f122388437cf1e2296ee9a3ae19d8858bc4 (patch) | |
tree | e5f26cb4b8c41eb4123956e87c17ea0a83970315 /drivers/infiniband/ulp | |
parent | 7a01d05cd5bed9594fbc4dff5e944652ff23876c (diff) | |
download | op-kernel-dev-74333f122388437cf1e2296ee9a3ae19d8858bc4.zip op-kernel-dev-74333f122388437cf1e2296ee9a3ae19d8858bc4.tar.gz |
IB/srpt: Cache global L_Key
This patch is a micro-optimization for the hot path.
Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/ulp')
-rw-r--r-- | drivers/infiniband/ulp/srpt/ib_srpt.c | 6 | ||||
-rw-r--r-- | drivers/infiniband/ulp/srpt/ib_srpt.h | 3 |
2 files changed, 6 insertions, 3 deletions
diff --git a/drivers/infiniband/ulp/srpt/ib_srpt.c b/drivers/infiniband/ulp/srpt/ib_srpt.c index 76370e3..6cf95ad 100644 --- a/drivers/infiniband/ulp/srpt/ib_srpt.c +++ b/drivers/infiniband/ulp/srpt/ib_srpt.c @@ -766,7 +766,7 @@ static int srpt_post_recv(struct srpt_device *sdev, BUG_ON(!sdev); list.addr = ioctx->ioctx.dma; list.length = srp_max_req_size; - list.lkey = sdev->pd->local_dma_lkey; + list.lkey = sdev->lkey; ioctx->ioctx.cqe.done = srpt_recv_done; wr.wr_cqe = &ioctx->ioctx.cqe; @@ -2343,7 +2343,7 @@ static void srpt_queue_response(struct se_cmd *cmd) sge.addr = ioctx->ioctx.dma; sge.length = resp_len; - sge.lkey = sdev->pd->local_dma_lkey; + sge.lkey = sdev->lkey; ioctx->ioctx.cqe.done = srpt_send_done; send_wr.next = NULL; @@ -2491,6 +2491,8 @@ static void srpt_add_one(struct ib_device *device) if (IS_ERR(sdev->pd)) goto free_dev; + sdev->lkey = sdev->pd->local_dma_lkey; + sdev->srq_size = min(srpt_srq_size, sdev->device->attrs.max_srq_wr); srq_attr.event_handler = srpt_srq_event; diff --git a/drivers/infiniband/ulp/srpt/ib_srpt.h b/drivers/infiniband/ulp/srpt/ib_srpt.h index 1b817e5..976e924 100644 --- a/drivers/infiniband/ulp/srpt/ib_srpt.h +++ b/drivers/infiniband/ulp/srpt/ib_srpt.h @@ -343,7 +343,7 @@ struct srpt_port { * struct srpt_device - Information associated by SRPT with a single HCA. * @device: Backpointer to the struct ib_device managed by the IB core. * @pd: IB protection domain. - * @mr: L_Key (local key) with write access to all local memory. + * @lkey: L_Key (local key) with write access to all local memory. * @srq: Per-HCA SRQ (shared receive queue). * @cm_id: Connection identifier. * @srq_size: SRQ size. @@ -358,6 +358,7 @@ struct srpt_port { struct srpt_device { struct ib_device *device; struct ib_pd *pd; + u32 lkey; struct ib_srq *srq; struct ib_cm_id *cm_id; int srq_size; |