* [PATCH AUTOSEL 6.17-6.6] wifi: ath12k: Increase DP_REO_CMD_RING_SIZE to 256
[not found] <20251025160905.3857885-1-sashal@kernel.org>
@ 2025-10-25 15:55 ` Sasha Levin
0 siblings, 0 replies; only message in thread
From: Sasha Levin @ 2025-10-25 15:55 UTC (permalink / raw)
To: patches, stable
Cc: Nithyanantham Paramasivam, Baochen Qiang,
Vasanthakumar Thiagarajan, Jeff Johnson, Sasha Levin, jjohnson,
linux-wireless, ath12k
From: Nithyanantham Paramasivam <nithyanantham.paramasivam@oss.qualcomm.com>
[ Upstream commit 82993345aef6987a916337ebd2fca3ff4a6250a7 ]
Increase DP_REO_CMD_RING_SIZE from 128 to 256 to avoid
queuing failures observed during stress test scenarios.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
Signed-off-by: Nithyanantham Paramasivam <nithyanantham.paramasivam@oss.qualcomm.com>
Reviewed-by: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
Link: https://patch.msgid.link/20250806111750.3214584-2-nithyanantham.paramasivam@oss.qualcomm.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
LLM Generated explanations, may be completely bogus:
YES
- Bumping `DP_REO_CMD_RING_SIZE` to 256 in
`drivers/net/wireless/ath/ath12k/dp.h:187` directly enlarges the REO
command SRNG that `ath12k_dp_srng_setup()` provisions in
`drivers/net/wireless/ath/ath12k/dp.c:555-563`, so the host can queue
twice as many HAL_REO commands (peer/TID deletes, cache flushes, stats
reads) before the hardware must drain them.
- Under the current 128-entry limit, heavy peer churn makes
`ath12k_hal_reo_cmd_send()` fall off the ring and return `-ENOBUFS`
(`drivers/net/wireless/ath/ath12k/hal_rx.c:223-236`), which propagates
straight back to callers via `ath12k_dp_reo_cmd_send()`
(`drivers/net/wireless/ath/ath12k/dp_rx.c:650-667`) and leaves TID
teardown paths dropping the descriptor while firmware still references
it—exactly the “queuing failures” and memory corruption observed
during stress.
- Ath11k has already shipped with the same 256-entry setting
(`drivers/net/wireless/ath/ath11k/dp.h:218`), so the larger ring size
is a proven, firmware-compatible configuration for this hardware
family rather than a new feature.
- The cost of doubling this DMA ring is only ~6 KiB (256 × 48-byte
entries), and the SRNG limits in `hal.c/hal.h` leave ample headroom,
so the change is low risk and entirely contained to ath12k datapath
setup.
- Because it prevents a real-world failure that can take the device
down, while touching only one constant, the patch squarely fits the
stable rules (important bugfix, minimal surface area, no architectural
churn).
Natural follow-up for stable maintainers:
1. Consider also backporting the subsequent ath12k retry fix for REO RX
queue updates to cover any residual overflow scenarios that might
still appear beyond the expanded ring capacity.
drivers/net/wireless/ath/ath12k/dp.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/wireless/ath/ath12k/dp.h b/drivers/net/wireless/ath/ath12k/dp.h
index 7baa48b86f7ad..10093b4515882 100644
--- a/drivers/net/wireless/ath/ath12k/dp.h
+++ b/drivers/net/wireless/ath/ath12k/dp.h
@@ -184,7 +184,7 @@ struct ath12k_pdev_dp {
#define DP_REO_REINJECT_RING_SIZE 32
#define DP_RX_RELEASE_RING_SIZE 1024
#define DP_REO_EXCEPTION_RING_SIZE 128
-#define DP_REO_CMD_RING_SIZE 128
+#define DP_REO_CMD_RING_SIZE 256
#define DP_REO_STATUS_RING_SIZE 2048
#define DP_RXDMA_BUF_RING_SIZE 4096
#define DP_RX_MAC_BUF_RING_SIZE 2048
--
2.51.0
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2025-10-25 16:14 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20251025160905.3857885-1-sashal@kernel.org>
2025-10-25 15:55 ` [PATCH AUTOSEL 6.17-6.6] wifi: ath12k: Increase DP_REO_CMD_RING_SIZE to 256 Sasha Levin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox