umber-kernel/include/rdma
Chuck Lever cc66fc9b5c RDMA/core: add rdma_rw_max_sge() helper for SQ sizing
[ Upstream commit afcae7d7b8a278a6c29e064f99e5bafd4ac1fb37 ]

svc_rdma_accept() computes sc_sq_depth as the sum of rq_depth and the
number of rdma_rw contexts (ctxts). This value is used to allocate the
Send CQ and to initialize the sc_sq_avail credit pool.

However, when the device uses memory registration for RDMA operations,
rdma_rw_init_qp() inflates the QP's max_send_wr by a factor of three
per context to account for REG and INV work requests. The Send CQ and
credit pool remain sized for only one work request per context,
causing Send Queue exhaustion under heavy NFS WRITE workloads.

Introduce rdma_rw_max_sge() to compute the actual number of Send Queue
entries required for a given number of rdma_rw contexts. Upper layer
protocols call this helper before creating a Queue Pair so that their
Send CQs and credit accounting match the QP's true capacity.

Update svc_rdma_accept() to use rdma_rw_max_sge() when computing
sc_sq_depth, ensuring the credit pool reflects the work requests
that rdma_rw_init_qp() will reserve.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Fixes: 00bd1439f4 ("RDMA/rw: Support threshold for registration vs scattering to local pages")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Link: https://patch.msgid.link/20260128005400.25147-5-cel@kernel.org
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2026-02-26 14:59:27 -08:00
..
ib.h uaccess: remove CONFIG_SET_FS 2022-02-25 09:36:06 +01:00
ib_addr.h RDMA/cma: Always set static rate to 0 for RoCE 2023-06-11 11:26:02 +03:00
ib_cache.h RDMA/core: Remove unused ib_find_exact_cached_pkey 2024-12-24 05:00:42 -05:00
ib_cm.h IB/cm: Remove dead code and adjust naming 2025-05-25 06:24:21 -04:00
ib_hdrs.h move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
ib_mad.h RDMA/sa_query: Support IB service records resolution 2025-08-13 06:15:56 -04:00
ib_marshall.h RDMA/core: Remove unused ib_copy_path_rec_from_user 2024-12-24 05:00:42 -05:00
ib_pack.h RDMA/core: Remove unused ib_ud_header_unpack 2024-12-24 05:00:42 -05:00
ib_pma.h
ib_sa.h RDMA/sa_query: Support IB service records resolution 2025-08-13 06:15:56 -04:00
ib_smi.h RDMA/mad: Delete duplicated init_query_mad functions 2022-01-05 15:18:36 -04:00
ib_sysfs.h RDMA: Change ops->init_port to ops->port_groups 2021-06-16 20:58:31 -03:00
ib_ucaps.h RDMA/uverbs: Introduce UCAP (User CAPabilities) API 2025-03-09 13:13:02 -04:00
ib_umem.h RDMA/core: Add umem "is_contiguous" and "start_dma_addr" helpers 2025-07-13 04:00:34 -04:00
ib_umem_odp.h RDMA/core: Convert UMEM ODP DMA mapping to caching IOVA and page linkage 2025-05-12 06:06:51 -04:00
ib_verbs.h IB: Extend UVERBS_METHOD_REG_MR to get DMAH 2025-07-23 01:42:11 -04:00
iba.h move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
ibta_vol1_c12.h
iw_cm.h RDMA Remove unused function declarations 2023-08-13 10:32:35 +03:00
iw_portmap.h
lag.h
mr_pool.h
opa_addr.h
opa_port_info.h
opa_smi.h
opa_vnic.h RDMA/opa_vnic: fix spelling typo in comment 2022-10-19 10:02:37 +03:00
rdma_cm.h RDMA/ucma: Support write an event into a CM 2025-08-13 06:16:11 -04:00
rdma_cm_ib.h
rdma_counter.h RDMA/core: Pass port to counter bind/unbind operations 2025-03-18 06:18:46 -04:00
rdma_netlink.h RDMA/nldev: Add support for RDMA monitoring 2024-09-13 08:29:14 +03:00
rdma_vt.h IB: move from strlcpy with unused retval to strscpy 2022-08-21 14:18:02 +03:00
rdmavt_cq.h
rdmavt_mr.h
rdmavt_qp.h fix missing vmalloc.h includes 2024-04-25 20:55:49 -07:00
restrack.h RDMA/core: Introduce a DMAH object and its alloc/free APIs 2025-07-23 01:42:10 -04:00
rw.h RDMA/core: add rdma_rw_max_sge() helper for SQ sizing 2026-02-26 14:59:27 -08:00
signature.h
tid_rdma_defs.h
uverbs_ioctl.h RDMA/uverbs: Avoid -Wflex-array-member-not-at-end warnings 2024-03-03 15:38:44 +02:00
uverbs_named_ioctl.h
uverbs_std_types.h RDMA/uverbs: Propagate errors from rdma_lookup_get_uobject() 2025-03-13 08:26:37 -04:00
uverbs_types.h RDMA/core: Move ib_uverbs_file struct to uverbs_types.h 2024-11-04 06:57:21 -05:00