From 371b0c0b09ff38cf708edcdb1a26d3846ac1b870 Mon Sep 17 00:00:00 2001 From: Alexey Marchuk Date: Mon, 13 Dec 2021 18:32:39 +0300 Subject: [PATCH] nvmf/rdma: Check device max_srq_wr when creating SRQ Some devices may support SRQ depth lower than defaulut value 4096 Signed-off-by: Alexey Marchuk Change-Id: I58da0ac268a6d4c4a7e3b500ae37b8fad4810e17 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10654 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins Reviewed-by: Changpeng Liu Reviewed-by: Jim Harris --- lib/nvmf/rdma.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/nvmf/rdma.c b/lib/nvmf/rdma.c index abeccd0ae..162747230 100644 --- a/lib/nvmf/rdma.c +++ b/lib/nvmf/rdma.c @@ -3274,7 +3274,11 @@ nvmf_rdma_poll_group_create(struct spdk_nvmf_transport *transport) TAILQ_INSERT_TAIL(&rgroup->pollers, poller, link); if (rtransport->rdma_opts.no_srq == false && device->num_srq < device->attr.max_srq) { - poller->max_srq_depth = rtransport->rdma_opts.max_srq_depth; + if ((int)rtransport->rdma_opts.max_srq_depth > device->attr.max_srq_wr) { + SPDK_WARNLOG("Requested SRQ depth %u, max supported by dev %s is %d\n", + rtransport->rdma_opts.max_srq_depth, device->context->device->name, device->attr.max_srq_wr); + } + poller->max_srq_depth = spdk_min((int)rtransport->rdma_opts.max_srq_depth, device->attr.max_srq_wr); device->num_srq++; memset(&srq_init_attr, 0, sizeof(srq_init_attr));