Commit a3f09a8f authored by Alexey Marchuk's avatar Alexey Marchuk Committed by Tomasz Zawadzki
Browse files

nvmf/rdma: Use new constant for MSDBD



NVMF RDMA ctrlr reported MSDBD=SPDK_NVMF_MAX_SGL_ENTRIES
That was a bit incorrect since changing SPDK_NVMF_MAX_SGL_ENTRIES
could break handling of Write IO with multi SGL payload
due to limited outstanding RDMA_READ operations -
if SPDK_NVMF_MAX_SGL_ENTRIES and num of sgl descriptors
in Write IO exceeded max_qp_init_rd_atom then such IO
could stuck. The same happens if initiator requestsed
smaller `initiator_depth`

Signed-off-by: default avatarAlexey Marchuk <alexeymar@nvidia.com>
Change-Id: Id43e53847bcf4d69e0d4c0c176de4664f8497842
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/19123


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarJim Harris <jim.harris@gmail.com>
Reviewed-by: default avatarMichael Haeuptle <michaelhaeuptle@gmail.com>
parent 6375b60c
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -30,10 +30,14 @@ const struct spdk_nvmf_transport_ops spdk_nvmf_transport_rdma;
/*
 RDMA Connection Resource Defaults
 */
#define NVMF_DEFAULT_MSDBD		16
#define NVMF_DEFAULT_TX_SGE		SPDK_NVMF_MAX_SGL_ENTRIES
#define NVMF_DEFAULT_RSP_SGE		1
#define NVMF_DEFAULT_RX_SGE		2

SPDK_STATIC_ASSERT(NVMF_DEFAULT_MSDBD <= SPDK_NVMF_MAX_SGL_ENTRIES,
		   "MSDBD must not exceed SPDK_NVMF_MAX_SGL_ENTRIES");

/* The RDMA completion queue size */
#define DEFAULT_NVMF_RDMA_CQ_SIZE	4096
#define MAX_WR_PER_QP(queue_depth)	(queue_depth * 3 + 2)
@@ -3838,7 +3842,7 @@ static void
nvmf_rdma_cdata_init(struct spdk_nvmf_transport *transport, struct spdk_nvmf_subsystem *subsystem,
		     struct spdk_nvmf_ctrlr_data *cdata)
{
	cdata->nvmf_specific.msdbd = SPDK_NVMF_MAX_SGL_ENTRIES;
	cdata->nvmf_specific.msdbd = NVMF_DEFAULT_MSDBD;

	/* Disable in-capsule data transfer for RDMA controller when dif_insert_or_strip is enabled
	since in-capsule data only works with NVME drives that support SGL memory layout */