From eaea3f24cccba62fd65f5e56b80a8a0a7ddcb924 Mon Sep 17 00:00:00 2001 From: Leonid Ravich Date: Wed, 1 Aug 2018 16:38:39 +0300 Subject: [PATCH] RDMA: fixing create qp failure due to not suppored send sge number, some vendorse support less send sge then SPDK_NVMF_MAX_SGL_ENTRIES. Change-Id: I5b550b537b6ff4ae5d7876a3f277f88cf06049e4 Signed-off-by: Leonid Ravich Reviewed-on: https://review.gerrithub.io/421012 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Jim Harris Reviewed-by: Changpeng Liu Chandler-Test-Pool: SPDK Automated Test System --- lib/nvmf/rdma.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/nvmf/rdma.c b/lib/nvmf/rdma.c index 3ff51a88e..af564ee77 100644 --- a/lib/nvmf/rdma.c +++ b/lib/nvmf/rdma.c @@ -230,6 +230,8 @@ struct spdk_nvmf_rdma_qpair { /* Number of requests in each state */ uint32_t state_cntr[RDMA_REQUEST_NUM_STATES]; + int max_sge; + /* Array of size "max_queue_depth" containing RDMA requests. */ struct spdk_nvmf_rdma_request *reqs; @@ -561,7 +563,7 @@ spdk_nvmf_rdma_qpair_initialize(struct spdk_nvmf_qpair *qpair) rqpair->ibv_init_attr.cap.max_send_wr = rqpair->max_queue_depth * 2; /* SEND, READ, and WRITE operations */ rqpair->ibv_init_attr.cap.max_recv_wr = rqpair->max_queue_depth; /* RECV operations */ - rqpair->ibv_init_attr.cap.max_send_sge = SPDK_NVMF_MAX_SGL_ENTRIES; + rqpair->ibv_init_attr.cap.max_send_sge = rqpair->max_sge; rqpair->ibv_init_attr.cap.max_recv_sge = NVMF_DEFAULT_RX_SGE; rc = rdma_create_qp(rqpair->cm_id, NULL, &rqpair->ibv_init_attr); @@ -918,6 +920,7 @@ nvmf_rdma_connect(struct spdk_nvmf_transport *transport, struct rdma_cm_event *e rqpair->max_rw_depth = max_rw_depth; rqpair->cm_id = event->id; rqpair->qpair.transport = transport; + rqpair->max_sge = spdk_min(port->device->attr.max_sge, SPDK_NVMF_MAX_SGL_ENTRIES); TAILQ_INIT(&rqpair->incoming_queue); event->id->context = &rqpair->qpair;