From: maxg@mellanox.com (Max Gurtovoy)
Subject: [PATCH 12/17] nvme-rdma: Introduce nvme_rdma_set_keyed_sgl helper func
Date: Sun, 27 May 2018 18:50:17 +0300 [thread overview]
Message-ID: <1527436222-15494-13-git-send-email-maxg@mellanox.com> (raw)
In-Reply-To: <1527436222-15494-1-git-send-email-maxg@mellanox.com>
This function will be used to avoid code duplication while
setting keyed sgl fields.
Signed-off-by: Max Gurtovoy <maxg at mellanox.com>
---
drivers/nvme/host/rdma.c | 34 +++++++++++++++++++---------------
1 file changed, 19 insertions(+), 15 deletions(-)
diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
index a240800..b96cf88 100644
--- a/drivers/nvme/host/rdma.c
+++ b/drivers/nvme/host/rdma.c
@@ -1074,14 +1074,23 @@ static void nvme_rdma_unmap_data(struct nvme_rdma_queue *queue,
sg_free_table_chained(&req->sg_table, true);
}
-static int nvme_rdma_set_sg_null(struct nvme_command *c)
+static void nvme_rdma_set_keyed_sgl(u64 addr, u64 length, u32 key,
+ struct nvme_command *c, bool invalidate)
{
struct nvme_keyed_sgl_desc *sg = &c->common.dptr.ksgl;
- sg->addr = 0;
- put_unaligned_le24(0, sg->length);
- put_unaligned_le32(0, sg->key);
+ sg->addr = cpu_to_le64(addr);
+ put_unaligned_le24(length, sg->length);
+ put_unaligned_le32(key, sg->key);
sg->type = NVME_KEY_SGL_FMT_DATA_DESC << 4;
+ if (invalidate)
+ sg->type |= NVME_SGL_FMT_INVALIDATE;
+}
+
+static int nvme_rdma_set_sg_null(struct nvme_command *c)
+{
+ nvme_rdma_set_keyed_sgl(0, 0, 0, c, false);
+
return 0;
}
@@ -1105,12 +1114,11 @@ static int nvme_rdma_map_sg_inline(struct nvme_rdma_queue *queue,
static int nvme_rdma_map_sg_single(struct nvme_rdma_queue *queue,
struct nvme_rdma_request *req, struct nvme_command *c)
{
- struct nvme_keyed_sgl_desc *sg = &c->common.dptr.ksgl;
+ nvme_rdma_set_keyed_sgl(sg_dma_address(req->sg_table.sgl),
+ sg_dma_len(req->sg_table.sgl),
+ queue->device->pd->unsafe_global_rkey,
+ c, false);
- sg->addr = cpu_to_le64(sg_dma_address(req->sg_table.sgl));
- put_unaligned_le24(sg_dma_len(req->sg_table.sgl), sg->length);
- put_unaligned_le32(queue->device->pd->unsafe_global_rkey, sg->key);
- sg->type = NVME_KEY_SGL_FMT_DATA_DESC << 4;
return 0;
}
@@ -1118,7 +1126,6 @@ static int nvme_rdma_map_sg_fr(struct nvme_rdma_queue *queue,
struct nvme_rdma_request *req, struct nvme_command *c,
int count)
{
- struct nvme_keyed_sgl_desc *sg = &c->common.dptr.ksgl;
int nr;
req->mr = ib_mr_pool_get(queue->qp, &queue->qp->rdma_mrs);
@@ -1152,11 +1159,8 @@ static int nvme_rdma_map_sg_fr(struct nvme_rdma_queue *queue,
IB_ACCESS_REMOTE_READ |
IB_ACCESS_REMOTE_WRITE;
- sg->addr = cpu_to_le64(req->mr->iova);
- put_unaligned_le24(req->mr->length, sg->length);
- put_unaligned_le32(req->mr->rkey, sg->key);
- sg->type = (NVME_KEY_SGL_FMT_DATA_DESC << 4) |
- NVME_SGL_FMT_INVALIDATE;
+ nvme_rdma_set_keyed_sgl(req->mr->iova, req->mr->length, req->mr->rkey,
+ c, true);
return 0;
}
--
1.8.3.1
next prev parent reply other threads:[~2018-05-27 15:50 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-27 15:50 [RFC PATCH 00/17] T10-PI support for NVMeoF/RDMA host Max Gurtovoy
2018-05-27 15:50 ` [PATCH 01/17] IB/isert: fix T10-pi check mask setting Max Gurtovoy
2018-05-28 7:21 ` Christoph Hellwig
2018-05-28 11:54 ` Max Gurtovoy
2018-05-28 12:03 ` Christoph Hellwig
2018-05-28 12:04 ` Max Gurtovoy
2018-05-28 16:33 ` Jason Gunthorpe
2018-05-29 3:01 ` Martin K. Petersen
2018-05-29 12:08 ` Max Gurtovoy
2018-05-29 19:23 ` Jason Gunthorpe
2018-05-29 22:11 ` Martin K. Petersen
2018-05-29 22:19 ` Jason Gunthorpe
2018-05-29 22:41 ` Martin K. Petersen
2018-05-30 8:07 ` Max Gurtovoy
2018-05-30 15:30 ` Jason Gunthorpe
2018-05-30 21:47 ` Sagi Grimberg
2018-05-30 21:49 ` Sagi Grimberg
2018-05-27 15:50 ` [PATCH 02/17] RDMA/core: introduce check masks for T10-PI offload Max Gurtovoy
2018-05-28 7:21 ` Christoph Hellwig
2018-05-30 21:56 ` Sagi Grimberg
2018-05-27 15:50 ` [PATCH 03/17] IB/iser: use T10-PI check mask definitions from core layer Max Gurtovoy
2018-05-28 7:22 ` Christoph Hellwig
2018-05-30 21:57 ` Sagi Grimberg
2018-05-27 15:50 ` [PATCH 04/17] IB/isert: " Max Gurtovoy
2018-05-28 7:22 ` Christoph Hellwig
2018-05-30 10:48 ` Max Gurtovoy
2018-05-30 12:08 ` Christoph Hellwig
2018-05-30 15:24 ` Jason Gunthorpe
2018-05-30 21:59 ` Sagi Grimberg
2018-05-30 21:58 ` Sagi Grimberg
2018-05-27 15:50 ` [PATCH 05/17] nvme: Fix extended data LBA supported setting Max Gurtovoy
2018-05-28 7:22 ` Christoph Hellwig
2018-05-29 12:47 ` Max Gurtovoy
2018-05-30 22:00 ` Sagi Grimberg
2018-05-27 15:50 ` [PATCH 06/17] nvme: Add WARN in case fabrics ctrl was set with wrong metadata caps Max Gurtovoy
2018-05-28 7:24 ` Christoph Hellwig
2018-05-28 14:56 ` Max Gurtovoy
2018-05-30 22:05 ` Sagi Grimberg
2018-05-27 15:50 ` [PATCH 07/17] nvme: introduce max_integrity_segments ctrl attribute Max Gurtovoy
2018-05-30 22:08 ` Sagi Grimberg
2018-05-27 15:50 ` [PATCH 08/17] nvme: limit integrity segments to be <= data segments Max Gurtovoy
2018-05-30 22:09 ` Sagi Grimberg
2018-06-07 13:02 ` Max Gurtovoy
2018-06-07 15:23 ` Sagi Grimberg
2018-06-07 23:50 ` Martin K. Petersen
2018-06-09 1:33 ` Max Gurtovoy
2018-06-13 0:35 ` Martin K. Petersen
2018-05-27 15:50 ` [PATCH 09/17] nvme: reduce the metadata size in case the ctrl doesn't support it Max Gurtovoy
2018-05-28 7:25 ` Christoph Hellwig
2018-05-27 15:50 ` [PATCH 10/17] nvme: export nvme_ns_has_pi function Max Gurtovoy
2018-05-28 7:25 ` Christoph Hellwig
2018-05-28 12:41 ` Max Gurtovoy
2018-05-30 22:19 ` Sagi Grimberg
2018-05-27 15:50 ` [PATCH 11/17] nvme-rdma: Introduce cqe for local invalidation Max Gurtovoy
2018-05-28 7:25 ` Christoph Hellwig
2018-05-30 22:26 ` Sagi Grimberg
2018-05-27 15:50 ` Max Gurtovoy [this message]
2018-05-28 7:26 ` [PATCH 12/17] nvme-rdma: Introduce nvme_rdma_set_keyed_sgl helper func Christoph Hellwig
2018-05-30 22:27 ` Sagi Grimberg
2018-05-27 15:50 ` [PATCH 13/17] nvme-rdma: introduce nvme_rdma_sgl structure Max Gurtovoy
2018-05-27 15:50 ` [PATCH 14/17] nvme-rdma: refactor cmd mapping/unmapping mechanism Max Gurtovoy
2018-05-30 22:33 ` Sagi Grimberg
2018-05-27 15:50 ` [PATCH 15/17] nvme-rdma: Add helper function for preparing sg list to RDMA operation Max Gurtovoy
2018-05-27 15:50 ` [PATCH 16/17] nvme-rdma: Introduce nvme_rdma_first_wr helper function Max Gurtovoy
2018-05-27 15:50 ` [PATCH 17/17] nvme-rdma: Add T10-PI support Max Gurtovoy
2018-05-28 7:28 ` Christoph Hellwig
2018-05-30 23:05 ` Sagi Grimberg
2018-06-03 8:51 ` Max Gurtovoy
2018-06-03 11:30 ` Sagi Grimberg
2018-06-03 14:01 ` Oren Duer
2018-06-03 14:04 ` Oren Duer
2018-06-03 16:30 ` Sagi Grimberg
2018-06-05 6:35 ` Oren Duer
2018-06-07 15:30 ` Sagi Grimberg
2018-06-06 12:33 ` Max Gurtovoy
2018-06-07 15:26 ` Sagi Grimberg
2018-05-30 21:47 ` [RFC PATCH 00/17] T10-PI support for NVMeoF/RDMA host Sagi Grimberg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1527436222-15494-13-git-send-email-maxg@mellanox.com \
--to=maxg@mellanox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).