wlan-ap-Telecominfraproject/feeds/ipq95xx/mac80211/patches/qca/664-c-ath12k-add-stats-for-TX-buffer-allocation-failures.patch
John Crispin b9b03a6e38 ipq95xx: add Qualcomm wifi-7 support
Signed-off-by: John Crispin <john@phrozen.org>
2023-04-10 14:25:48 +02:00

52 lines
1.9 KiB
Diff

From fe0876f1865869e93bde6e138f1d9d99f1ae54a9 Mon Sep 17 00:00:00 2001
From: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Date: Wed, 10 Aug 2022 11:35:45 -0700
Subject: [PATCH 03/12] ath12k: add stats for TX buffer allocation failures
Total tx buffers allocated per TCL ring id. When buffer is not available
on a particular TCL ring, capture this in stats.
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
---
drivers/net/wireless/ath/ath12k/core.h | 3 +++
drivers/net/wireless/ath/ath12k/debugfs.c | 5 +++++
drivers/net/wireless/ath/ath12k/dp_tx.c | 1 +
3 files changed, 9 insertions(+)
--- a/drivers/net/wireless/ath/ath12k/core.h
+++ b/drivers/net/wireless/ath/ath12k/core.h
@@ -881,6 +881,9 @@ struct ath12k_dp_ring_bp_stats {
struct ath12k_soc_dp_tx_err_stats {
/* TCL Ring Descriptor unavailable */
u32 desc_na[DP_TCL_NUM_RING_MAX];
+ /* TCL Ring Buffers unavailable */
+ u32 txbuf_na[DP_TCL_NUM_RING_MAX];
+
/* Other failures during dp_tx due to mem allocation failure
* idr unavailable etc.
*/
--- a/drivers/net/wireless/ath/ath12k/debugfs.c
+++ b/drivers/net/wireless/ath/ath12k/debugfs.c
@@ -865,6 +865,11 @@ static ssize_t ath12k_debugfs_dump_soc_d
len += scnprintf(buf + len, size - len, "ring%d: %u\n",
i, soc_stats->tx_err.desc_na[i]);
+ len += scnprintf(buf + len, size - len, "\nTCL Ring Buffer Alloc Failures:\n");
+ for (i = 0; i < DP_TCL_NUM_RING_MAX; i++)
+ len += scnprintf(buf + len, size - len, "ring%d: %u\n",
+ i, soc_stats->tx_err.txbuf_na[i]);
+
len += scnprintf(buf + len, size - len,
"\nMisc Transmit Failures: %d\n",
atomic_read(&soc_stats->tx_err.misc_fail));
--- a/drivers/net/wireless/ath/ath12k/dp_tx.c
+++ b/drivers/net/wireless/ath/ath12k/dp_tx.c
@@ -169,6 +169,7 @@ tcl_ring_sel:
tx_desc = ath12k_dp_tx_assign_buffer(dp, ti.ring_id);
if (!tx_desc) {
+ ab->soc_stats.tx_err.txbuf_na[ti.ring_id]++;
if (ring_map == (BIT(DP_TCL_NUM_RING_MAX) - 1))
return -ENOSPC;