[PATCH ath-next 8/8] wifi: ath12k: add WBM SW desc fallback counter
Pardeep Kaur <[email protected]> Thu, 23 Jul 2026 18:24:48 +0530
| Newsgroups | org.infradead.lists.ath12k,org.kernel.vger.linux-wireless |
|---|---|
| Message-ID | <[email protected]> |
From: Aniruddha Mishra <[email protected]> When HW CC is not done, the WBM RX error path falls back to cookie-based descriptor retrieval via ath12k_dp_get_rx_desc(). This fallback path is taken before knowing whether the retrieval will succeed, so it is not a drop event and should not be counted in the drop[] array. Add a dedicated sw_desc_fallback counter in ath12k_device_dp_rx_wbm_err_stats to track how often the HW CC fallback path is taken, distinct from actual packet drops. Expose the counter in the device_dp_stats debugfs file as a separate line. Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.6.r1-00402-QCAHKSWPL_SILICONZ-1 Signed-off-by: Aniruddha Mishra <[email protected]> Co-developed-by: Pardeep Kaur <[email protected]> Signed-off-by: Pardeep Kaur <[email protected]> --- drivers/net/wireless/ath/ath12k/debugfs.c | 4 ++++ drivers/net/wireless/ath/ath12k/dp.h | 1 + drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c | 1 + 3 files changed, 6 insertions(+) diff --git a/drivers/net/wireless/ath/ath12k/debugfs.c b/drivers/net/wireless/ath/ath12k/debugfs.c index 4176c837a6ef..534e7d13e66b 100644 --- a/drivers/net/wireless/ath/ath12k/debugfs.c +++ b/drivers/net/wireless/ath/ath12k/debugfs.c @@ -1122,6 +1122,10 @@ static ssize_t ath12k_debugfs_dump_device_dp_stats(struct file *file, len += scnprintf(buf + len, size - len, "%s: %u\n", wbm_rx_drop[i], device_stats->wbm_err.drop[i]); + len += scnprintf(buf + len, size - len, + "\nWBM SW desc fallback (HW CC not done): %u\n", + device_stats->wbm_err.sw_desc_fallback); + len += scnprintf(buf + len, size - len, "\nREO sent to stack\n"); for (i = 0; i < DP_REO_DST_RING_MAX; i++) len += scnprintf(buf + len, size - len, "ring%d: %u\n", diff --git a/drivers/net/wireless/ath/ath12k/dp.h b/drivers/net/wireless/ath/ath12k/dp.h index 298b65142a0e..af176ee7d89f 100644 --- a/drivers/net/wireless/ath/ath12k/dp.h +++ b/drivers/net/wireless/ath/ath12k/dp.h @@ -441,6 +441,7 @@ struct ath12k_device_dp_rx_wbm_err_stats { u32 rxdma_error[HAL_REO_ENTR_RING_RXDMA_ECODE_MAX]; u32 reo_error[HAL_REO_DEST_RING_ERROR_CODE_MAX]; u32 drop[WBM_ERR_DROP_MAX]; + u32 sw_desc_fallback; }; struct ath12k_device_dp_stats { diff --git a/drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c b/drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c index 33c4c89eefb5..9b6d04783c6b 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c +++ b/drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c @@ -1968,6 +1968,7 @@ int ath12k_wifi7_dp_rx_process_wbm_err(struct ath12k_dp *dp, /* retry manual desc retrieval if hw cc is not done */ if (!desc_info) { + dp->device_stats.wbm_err.sw_desc_fallback++; desc_info = ath12k_dp_get_rx_desc(dp, err_info.cookie); if (!desc_info) { dp->device_stats.wbm_err.drop[WBM_ERR_GET_SW_DESC]++; -- 2.34.1