diff options
| author | Sunny Tiwari <sunnytiwari@google.com> | 2026-10-17 05:28:56 +0000 |
|---|---|---|
| committer | Leon Romanovsky <leon@kernel.org> | 2026-10-20 06:21:15 -0400 |
| commit | c3e8e9451e6f1b69f685b75e0fbf14f3d0fb2539 (patch) | |
| tree | c236c5f5673e2a2f3f04c2e8a3fe4b47ff02ba0d /scripts/Makefile.thinlto | |
| parent | bb75e5580b15cd23ededf15683a5ad67d7b61aab (diff) | |
| download | lwn-c3e8e9451e6f1b69f685b75e0fbf14f3d0fb2539.tar.gz lwn-c3e8e9451e6f1b69f685b75e0fbf14f3d0fb2539.zip | |
RDMA/irdma: Bound in-flight CQP ops across deferred completions
On IRDMA_GEN_3+ devices, CQP operations can complete in two stages:
Stage-1 on the CCQ acknowledges receipt and moves an entry from
cqp->ooo_avail to cqp->ooo_pnd, while Stage-2 signals final completion
via an AEQ event or a subsequent CCQ CQE.
In irdma_sc_ccq_get_cqe_info(), Stage-1 processing advances
cqp->sq_ring.tail so the SQ descriptor slot can be reused once consumed
by hardware, whereas cqp->completed_ops is only incremented on Stage-2.
Because irdma_cqp_ring_full() only checks cqp->sq_ring, a burst of
backlogged commands in dev->cqp_cmd_head allows irdma_process_bh() to
submit more concurrent in-flight CQP commands than the maximum supported
limit (cqp->sq_size - 1) while earlier commands await Stage-2. This
causes CQP completions to be lost and synchronous waiters to time out
with -ETIMEDOUT (-110).
Fix this by:
- Updating irdma_cqp_ring_full() to bound total in-flight CQP
operations (cqp->requested_ops - cqp->completed_ops) to
(cqp->sq_size - 1).
- Calling irdma_process_bh() at the end of irdma_process_ae_def_cmpl()
so backlogged commands are drained after Stage-2 AEQ completions
increment cqp->completed_ops and free in-flight capacity.
Fixes: c7db0abe5f2b ("RDMA/irdma: Add GEN3 CQP support with deferred completions")
Assisted-by: Gemini
Signed-off-by: Sunny Tiwari <sunnytiwari@google.com>
Link: https://patch.msgid.link/20261017052856.3570063-1-sunnytiwari@google.com
Reviewed-by: Jacob Moroni <jmoroni@google.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
