Linux wireless drivers development
 help / color / mirror / Atom feed
* [PATCH ath-next v2] wifi: ath12k: Add support for transmit histogram stats
@ 2025-06-17 11:21 Roopni Devanathan
  2025-06-26 17:20 ` Vasanthakumar Thiagarajan
  2025-06-26 23:15 ` Jeff Johnson
  0 siblings, 2 replies; 6+ messages in thread
From: Roopni Devanathan @ 2025-06-17 11:21 UTC (permalink / raw)
  To: ath12k; +Cc: linux-wireless, Saleemuddin Shaik, Roopni Devanathan

From: Saleemuddin Shaik <quic_saleemud@quicinc.com>

Add support for transmit histogram stats under HTT stats type 9. These
stats give information about drop count, MCS drop rate, histogram
count, etc.

Note: WCN7850 firmware version -
WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3 does not support tag
HTT_STATS_TX_PDEV_HISTOGRAM_STATS_TAG(144), currently.

Sample output:
echo 9 > /sys/kernel/debug/ath12k/pci-0000\:58\:00.0/mac0/htt_stats_type
cat /sys/kernel/debug/ath12k/pci-0000\:58\:00.0/mac0/htt_stats
...
low_latency_rate_cnt =  0
su_burst_rate_drop_cnt = 0
su_burst_rate_drop_fail_cnt = 0
rate_retry_mcs_drop_cnt = 0

PER_HISTOGRAM_STATS
mcs_drop_rate =  0:0, 1:0, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0, 10:0, 11:0, 12:0, 13:0, 14:0, 15:0
per_histogram_count =  0:0, 1:0, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0, 10:0,
11:0, 12:0, 13:0, 14:0, 15:0, 16:0, 17:0, 18:0, 19:0, 20:0,
21:0, 22:0, 23:0, 24:0, 25:0, 26:0, 27:0, 28:0, 29:0, 30:0,
31:0, 32:0, 33:0, 34:0, 35:0, 36:0, 37:0, 38:0, 39:0, 40:0,
41:0, 42:0, 43:0, 44:0, 45:0, 46:0, 47:0, 48:0, 49:0, 50:0,
51:0, 52:0, 53:0, 54:0, 55:0, 56:0, 57:0, 58:0, 59:0, 60:0,
61:0, 62:0, 63:0, 64:0, 65:0, 66:0, 67:0, 68:0, 69:0, 70:0,
71:0, 72:0, 73:0, 74:0, 75:0, 76:0, 77:0, 78:0, 79:0, 80:0,
81:0, 82:0, 83:0, 84:0, 85:0, 86:0, 87:0, 88:0, 89:0, 90:0,
91:0, 92:0, 93:0, 94:0, 95:0, 96:0, 97:0, 98:0, 99:0, 100:0

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1

Signed-off-by: Saleemuddin Shaik <quic_saleemud@quicinc.com>
Signed-off-by: Roopni Devanathan <quic_rdevanat@quicinc.com>
---
v2:
 - Removed 'inline' keyword from function definition to resolve wifibot
   error.
---
 .../wireless/ath/ath12k/debugfs_htt_stats.c   | 36 ++++++++++++++++++-
 .../wireless/ath/ath12k/debugfs_htt_stats.h   | 16 +++++++++
 2 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.c b/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.c
index aeaf970339d4..0da6c91dd314 100644
--- a/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.c
+++ b/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.c
@@ -4720,7 +4720,38 @@ ath12k_htt_print_tx_pdev_rate_stats_tlv(const void *tag_buf, u16 tag_len,
 	len += print_array_to_buf(buf, len, "tx_pream", htt_stats_buf->tx_pream,
 				  ATH12K_HTT_TX_PDEV_STATS_NUM_PREAMBLE_TYPES, "\n");
 	len += print_array_to_buf(buf, len, "tx_dcm", htt_stats_buf->tx_dcm,
-				  ATH12K_HTT_TX_PDEV_STATS_NUM_DCM_COUNTERS, "\n");
+				  ATH12K_HTT_TX_PDEV_STATS_NUM_DCM_COUNTERS, "\n\n");
+
+	stats_req->buf_len = len;
+}
+
+static void
+ath12k_htt_print_histogram_stats_tlv(const void *tag_buf, u16 tag_len,
+				     struct debug_htt_stats_req *stats_req)
+{
+	const struct ath12k_htt_tx_histogram_stats_tlv *stats_buf = tag_buf;
+	u32 buf_len = ATH12K_HTT_STATS_BUF_SIZE;
+	u32 len = stats_req->buf_len;
+	u8 *buf = stats_req->buf;
+
+	if (tag_len < sizeof(*stats_buf))
+		return;
+
+	len += scnprintf(buf + len, buf_len - len, "low_latency_rate_cnt =  %u\n",
+			 le32_to_cpu(stats_buf->low_latency_rate_cnt));
+	len += scnprintf(buf + len, buf_len - len, "su_burst_rate_drop_cnt = %u\n",
+			 le32_to_cpu(stats_buf->su_burst_rate_drop_cnt));
+	len += scnprintf(buf + len, buf_len - len, "su_burst_rate_drop_fail_cnt = %u\n",
+			 le32_to_cpu(stats_buf->su_burst_rate_drop_fail_cnt));
+	len += scnprintf(buf + len, buf_len - len, "rate_retry_mcs_drop_cnt = %u\n",
+			 le32_to_cpu(stats_buf->rate_retry_mcs_drop_cnt));
+
+	len += scnprintf(buf + len, buf_len - len, "\nPER_HISTOGRAM_STATS\n");
+	len += print_array_to_buf(buf, len, "mcs_drop_rate", stats_buf->mcs_drop_rate,
+				  ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_DROP_COUNTERS, "\n");
+	len += print_array_to_buf(buf, len, "per_histogram_count",
+				  stats_buf->per_histogram_cnt,
+				  ATH12K_HTT_TX_PDEV_STATS_NUM_PER_COUNTERS, "\n\n");
 
 	stats_req->buf_len = len;
 }
@@ -5277,6 +5308,9 @@ static int ath12k_dbg_htt_ext_stats_parse(struct ath12k_base *ab,
 	case HTT_STATS_TX_PDEV_RATE_STATS_TAG:
 		ath12k_htt_print_tx_pdev_rate_stats_tlv(tag_buf, len, stats_req);
 		break;
+	case HTT_STATS_TX_PDEV_HISTOGRAM_STATS_TAG:
+		ath12k_htt_print_histogram_stats_tlv(tag_buf, len, stats_req);
+		break;
 	case HTT_STATS_RX_PDEV_RATE_STATS_TAG:
 		ath12k_htt_print_rx_pdev_rate_stats_tlv(tag_buf, len, stats_req);
 		break;
diff --git a/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.h b/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.h
index c2a02cf8a38b..5fc5d8c00355 100644
--- a/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.h
+++ b/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.h
@@ -237,6 +237,7 @@ enum ath12k_dbg_htt_tlv_tag {
 	HTT_STATS_TX_SELFGEN_BE_ERR_STATS_TAG		= 137,
 	HTT_STATS_TX_SELFGEN_BE_STATS_TAG		= 138,
 	HTT_STATS_TX_SELFGEN_BE_SCHED_STATUS_STATS_TAG	= 139,
+	HTT_STATS_TX_PDEV_HISTOGRAM_STATS_TAG		= 144,
 	HTT_STATS_TXBF_OFDMA_AX_NDPA_STATS_TAG		= 147,
 	HTT_STATS_TXBF_OFDMA_AX_NDP_STATS_TAG		= 148,
 	HTT_STATS_TXBF_OFDMA_AX_BRP_STATS_TAG		= 149,
@@ -418,6 +419,12 @@ struct ath12k_htt_tx_pdev_mu_ppdu_dist_stats_tlv {
 #define ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS   2
 #define ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS  2
 #define ATH12K_HTT_TX_PDEV_STATS_NUM_11AX_TRIGGER_TYPES   6
+#define ATH12K_HTT_TX_PDEV_STATS_NUM_PER_COUNTERS	  101
+
+#define ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_DROP_COUNTERS \
+	(ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS + \
+	 ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS + \
+	 ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS)
 
 struct ath12k_htt_tx_pdev_rate_stats_tlv {
 	__le32 mac_id_word;
@@ -472,6 +479,15 @@ struct ath12k_htt_tx_pdev_rate_stats_tlv {
 	__le32 tx_bw_320mhz;
 };
 
+struct ath12k_htt_tx_histogram_stats_tlv {
+	__le32 rate_retry_mcs_drop_cnt;
+	__le32 mcs_drop_rate[ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_DROP_COUNTERS];
+	__le32 per_histogram_cnt[ATH12K_HTT_TX_PDEV_STATS_NUM_PER_COUNTERS];
+	__le32 low_latency_rate_cnt;
+	__le32 su_burst_rate_drop_cnt;
+	__le32 su_burst_rate_drop_fail_cnt;
+};
+
 #define ATH12K_HTT_RX_PDEV_STATS_NUM_LEGACY_CCK_STATS		4
 #define ATH12K_HTT_RX_PDEV_STATS_NUM_LEGACY_OFDM_STATS		8
 #define ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS		12

base-commit: 7fb79ce2693c94f8f74bf62ad25a97e4b61721b8
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH ath-next v2] wifi: ath12k: Add support for transmit histogram stats
  2025-06-17 11:21 [PATCH ath-next v2] wifi: ath12k: Add support for transmit histogram stats Roopni Devanathan
@ 2025-06-26 17:20 ` Vasanthakumar Thiagarajan
  2025-06-26 18:18   ` Jeff Johnson
  2025-06-26 23:15 ` Jeff Johnson
  1 sibling, 1 reply; 6+ messages in thread
From: Vasanthakumar Thiagarajan @ 2025-06-26 17:20 UTC (permalink / raw)
  To: Roopni Devanathan, ath12k; +Cc: linux-wireless, Saleemuddin Shaik



On 6/17/2025 4:51 PM, Roopni Devanathan wrote:
> From: Saleemuddin Shaik <quic_saleemud@quicinc.com>
> 
> Add support for transmit histogram stats under HTT stats type 9. These
> stats give information about drop count, MCS drop rate, histogram
> count, etc.
> 
> Note: WCN7850 firmware version -
> WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3 does not support tag
> HTT_STATS_TX_PDEV_HISTOGRAM_STATS_TAG(144), currently.
> 
> Sample output:
> echo 9 > /sys/kernel/debug/ath12k/pci-0000\:58\:00.0/mac0/htt_stats_type
> cat /sys/kernel/debug/ath12k/pci-0000\:58\:00.0/mac0/htt_stats
> ...
> low_latency_rate_cnt =  0
> su_burst_rate_drop_cnt = 0
> su_burst_rate_drop_fail_cnt = 0
> rate_retry_mcs_drop_cnt = 0
> 
> PER_HISTOGRAM_STATS
> mcs_drop_rate =  0:0, 1:0, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0, 10:0, 11:0, 12:0, 13:0, 14:0, 15:0
> per_histogram_count =  0:0, 1:0, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0, 10:0,
> 11:0, 12:0, 13:0, 14:0, 15:0, 16:0, 17:0, 18:0, 19:0, 20:0,
> 21:0, 22:0, 23:0, 24:0, 25:0, 26:0, 27:0, 28:0, 29:0, 30:0,
> 31:0, 32:0, 33:0, 34:0, 35:0, 36:0, 37:0, 38:0, 39:0, 40:0,
> 41:0, 42:0, 43:0, 44:0, 45:0, 46:0, 47:0, 48:0, 49:0, 50:0,
> 51:0, 52:0, 53:0, 54:0, 55:0, 56:0, 57:0, 58:0, 59:0, 60:0,
> 61:0, 62:0, 63:0, 64:0, 65:0, 66:0, 67:0, 68:0, 69:0, 70:0,
> 71:0, 72:0, 73:0, 74:0, 75:0, 76:0, 77:0, 78:0, 79:0, 80:0,
> 81:0, 82:0, 83:0, 84:0, 85:0, 86:0, 87:0, 88:0, 89:0, 90:0,
> 91:0, 92:0, 93:0, 94:0, 95:0, 96:0, 97:0, 98:0, 99:0, 100:0
> 
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
> 
> Signed-off-by: Saleemuddin Shaik <quic_saleemud@quicinc.com>
> Signed-off-by: Roopni Devanathan <quic_rdevanat@quicinc.com>
> ---
> v2:
>   - Removed 'inline' keyword from function definition to resolve wifibot
>     error.
> ---
>   .../wireless/ath/ath12k/debugfs_htt_stats.c   | 36 ++++++++++++++++++-
>   .../wireless/ath/ath12k/debugfs_htt_stats.h   | 16 +++++++++
>   2 files changed, 51 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.c b/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.c
> index aeaf970339d4..0da6c91dd314 100644
> --- a/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.c
> +++ b/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.c
> @@ -4720,7 +4720,38 @@ ath12k_htt_print_tx_pdev_rate_stats_tlv(const void *tag_buf, u16 tag_len,
>   	len += print_array_to_buf(buf, len, "tx_pream", htt_stats_buf->tx_pream,
>   				  ATH12K_HTT_TX_PDEV_STATS_NUM_PREAMBLE_TYPES, "\n");
>   	len += print_array_to_buf(buf, len, "tx_dcm", htt_stats_buf->tx_dcm,
> -				  ATH12K_HTT_TX_PDEV_STATS_NUM_DCM_COUNTERS, "\n");
> +				  ATH12K_HTT_TX_PDEV_STATS_NUM_DCM_COUNTERS, "\n\n");
> +
> +	stats_req->buf_len = len;
> +}
> +
> +static void
> +ath12k_htt_print_histogram_stats_tlv(const void *tag_buf, u16 tag_len,
> +				     struct debug_htt_stats_req *stats_req)
> +{
> +	const struct ath12k_htt_tx_histogram_stats_tlv *stats_buf = tag_buf;
> +	u32 buf_len = ATH12K_HTT_STATS_BUF_SIZE;
> +	u32 len = stats_req->buf_len;
> +	u8 *buf = stats_req->buf;
> +
> +	if (tag_len < sizeof(*stats_buf))
> +		return;
> +
> +	len += scnprintf(buf + len, buf_len - len, "low_latency_rate_cnt =  %u\n",
> +			 le32_to_cpu(stats_buf->low_latency_rate_cnt));
> +	len += scnprintf(buf + len, buf_len - len, "su_burst_rate_drop_cnt = %u\n",
> +			 le32_to_cpu(stats_buf->su_burst_rate_drop_cnt));
> +	len += scnprintf(buf + len, buf_len - len, "su_burst_rate_drop_fail_cnt = %u\n",
> +			 le32_to_cpu(stats_buf->su_burst_rate_drop_fail_cnt));
> +	len += scnprintf(buf + len, buf_len - len, "rate_retry_mcs_drop_cnt = %u\n",
> +			 le32_to_cpu(stats_buf->rate_retry_mcs_drop_cnt));
> +
> +	len += scnprintf(buf + len, buf_len - len, "\nPER_HISTOGRAM_STATS\n");
> +	len += print_array_to_buf(buf, len, "mcs_drop_rate", stats_buf->mcs_drop_rate,
> +				  ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_DROP_COUNTERS, "\n");
> +	len += print_array_to_buf(buf, len, "per_histogram_count",
> +				  stats_buf->per_histogram_cnt,
> +				  ATH12K_HTT_TX_PDEV_STATS_NUM_PER_COUNTERS, "\n\n");
>   
>   	stats_req->buf_len = len;
>   }
> @@ -5277,6 +5308,9 @@ static int ath12k_dbg_htt_ext_stats_parse(struct ath12k_base *ab,
>   	case HTT_STATS_TX_PDEV_RATE_STATS_TAG:
>   		ath12k_htt_print_tx_pdev_rate_stats_tlv(tag_buf, len, stats_req);
>   		break;
> +	case HTT_STATS_TX_PDEV_HISTOGRAM_STATS_TAG:
> +		ath12k_htt_print_histogram_stats_tlv(tag_buf, len, stats_req);
> +		break;
>   	case HTT_STATS_RX_PDEV_RATE_STATS_TAG:
>   		ath12k_htt_print_rx_pdev_rate_stats_tlv(tag_buf, len, stats_req);
>   		break;
> diff --git a/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.h b/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.h
> index c2a02cf8a38b..5fc5d8c00355 100644
> --- a/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.h
> +++ b/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.h
> @@ -237,6 +237,7 @@ enum ath12k_dbg_htt_tlv_tag {
>   	HTT_STATS_TX_SELFGEN_BE_ERR_STATS_TAG		= 137,
>   	HTT_STATS_TX_SELFGEN_BE_STATS_TAG		= 138,
>   	HTT_STATS_TX_SELFGEN_BE_SCHED_STATUS_STATS_TAG	= 139,
> +	HTT_STATS_TX_PDEV_HISTOGRAM_STATS_TAG		= 144,
>   	HTT_STATS_TXBF_OFDMA_AX_NDPA_STATS_TAG		= 147,
>   	HTT_STATS_TXBF_OFDMA_AX_NDP_STATS_TAG		= 148,
>   	HTT_STATS_TXBF_OFDMA_AX_BRP_STATS_TAG		= 149,
> @@ -418,6 +419,12 @@ struct ath12k_htt_tx_pdev_mu_ppdu_dist_stats_tlv {
>   #define ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS   2
>   #define ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS  2
>   #define ATH12K_HTT_TX_PDEV_STATS_NUM_11AX_TRIGGER_TYPES   6
> +#define ATH12K_HTT_TX_PDEV_STATS_NUM_PER_COUNTERS	  101
> +
> +#define ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_DROP_COUNTERS \
> +	(ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS + \
> +	 ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS + \
> +	 ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS)
>   
>   struct ath12k_htt_tx_pdev_rate_stats_tlv {
>   	__le32 mac_id_word;
> @@ -472,6 +479,15 @@ struct ath12k_htt_tx_pdev_rate_stats_tlv {
>   	__le32 tx_bw_320mhz;
>   };
>   
> +struct ath12k_htt_tx_histogram_stats_tlv {
> +	__le32 rate_retry_mcs_drop_cnt;
> +	__le32 mcs_drop_rate[ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_DROP_COUNTERS];
> +	__le32 per_histogram_cnt[ATH12K_HTT_TX_PDEV_STATS_NUM_PER_COUNTERS];
> +	__le32 low_latency_rate_cnt;
> +	__le32 su_burst_rate_drop_cnt;
> +	__le32 su_burst_rate_drop_fail_cnt;
> +};

Since this strcuture represents the message format used between host and firmware, pls add 
__packed annotation even though it may not have any effect in this case.

Vasanth

Vasanth

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH ath-next v2] wifi: ath12k: Add support for transmit histogram stats
  2025-06-26 17:20 ` Vasanthakumar Thiagarajan
@ 2025-06-26 18:18   ` Jeff Johnson
  2025-06-26 18:25     ` Jeff Johnson
  0 siblings, 1 reply; 6+ messages in thread
From: Jeff Johnson @ 2025-06-26 18:18 UTC (permalink / raw)
  To: Vasanthakumar Thiagarajan, Roopni Devanathan, ath12k
  Cc: linux-wireless, Saleemuddin Shaik

On 6/26/2025 10:20 AM, Vasanthakumar Thiagarajan wrote:
> 
> 
> On 6/17/2025 4:51 PM, Roopni Devanathan wrote:
>> From: Saleemuddin Shaik <quic_saleemud@quicinc.com>
>>
>> Add support for transmit histogram stats under HTT stats type 9. These
>> stats give information about drop count, MCS drop rate, histogram
>> count, etc.
>>
>> Note: WCN7850 firmware version -
>> WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3 does not support tag
>> HTT_STATS_TX_PDEV_HISTOGRAM_STATS_TAG(144), currently.
>>
>> Sample output:
>> echo 9 > /sys/kernel/debug/ath12k/pci-0000\:58\:00.0/mac0/htt_stats_type
>> cat /sys/kernel/debug/ath12k/pci-0000\:58\:00.0/mac0/htt_stats
>> ...
>> low_latency_rate_cnt =  0
>> su_burst_rate_drop_cnt = 0
>> su_burst_rate_drop_fail_cnt = 0
>> rate_retry_mcs_drop_cnt = 0
>>
>> PER_HISTOGRAM_STATS
>> mcs_drop_rate =  0:0, 1:0, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0, 10:0, 11:0, 12:0, 13:0, 14:0, 15:0
>> per_histogram_count =  0:0, 1:0, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0, 10:0,
>> 11:0, 12:0, 13:0, 14:0, 15:0, 16:0, 17:0, 18:0, 19:0, 20:0,
>> 21:0, 22:0, 23:0, 24:0, 25:0, 26:0, 27:0, 28:0, 29:0, 30:0,
>> 31:0, 32:0, 33:0, 34:0, 35:0, 36:0, 37:0, 38:0, 39:0, 40:0,
>> 41:0, 42:0, 43:0, 44:0, 45:0, 46:0, 47:0, 48:0, 49:0, 50:0,
>> 51:0, 52:0, 53:0, 54:0, 55:0, 56:0, 57:0, 58:0, 59:0, 60:0,
>> 61:0, 62:0, 63:0, 64:0, 65:0, 66:0, 67:0, 68:0, 69:0, 70:0,
>> 71:0, 72:0, 73:0, 74:0, 75:0, 76:0, 77:0, 78:0, 79:0, 80:0,
>> 81:0, 82:0, 83:0, 84:0, 85:0, 86:0, 87:0, 88:0, 89:0, 90:0,
>> 91:0, 92:0, 93:0, 94:0, 95:0, 96:0, 97:0, 98:0, 99:0, 100:0
>>
>> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
>>
>> Signed-off-by: Saleemuddin Shaik <quic_saleemud@quicinc.com>
>> Signed-off-by: Roopni Devanathan <quic_rdevanat@quicinc.com>
>> ---
>> v2:
>>   - Removed 'inline' keyword from function definition to resolve wifibot
>>     error.
>> ---
>>   .../wireless/ath/ath12k/debugfs_htt_stats.c   | 36 ++++++++++++++++++-
>>   .../wireless/ath/ath12k/debugfs_htt_stats.h   | 16 +++++++++
>>   2 files changed, 51 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.c b/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.c
>> index aeaf970339d4..0da6c91dd314 100644
>> --- a/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.c
>> +++ b/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.c
>> @@ -4720,7 +4720,38 @@ ath12k_htt_print_tx_pdev_rate_stats_tlv(const void *tag_buf, u16 tag_len,
>>   	len += print_array_to_buf(buf, len, "tx_pream", htt_stats_buf->tx_pream,
>>   				  ATH12K_HTT_TX_PDEV_STATS_NUM_PREAMBLE_TYPES, "\n");
>>   	len += print_array_to_buf(buf, len, "tx_dcm", htt_stats_buf->tx_dcm,
>> -				  ATH12K_HTT_TX_PDEV_STATS_NUM_DCM_COUNTERS, "\n");
>> +				  ATH12K_HTT_TX_PDEV_STATS_NUM_DCM_COUNTERS, "\n\n");
>> +
>> +	stats_req->buf_len = len;
>> +}
>> +
>> +static void
>> +ath12k_htt_print_histogram_stats_tlv(const void *tag_buf, u16 tag_len,
>> +				     struct debug_htt_stats_req *stats_req)
>> +{
>> +	const struct ath12k_htt_tx_histogram_stats_tlv *stats_buf = tag_buf;
>> +	u32 buf_len = ATH12K_HTT_STATS_BUF_SIZE;
>> +	u32 len = stats_req->buf_len;
>> +	u8 *buf = stats_req->buf;
>> +
>> +	if (tag_len < sizeof(*stats_buf))
>> +		return;
>> +
>> +	len += scnprintf(buf + len, buf_len - len, "low_latency_rate_cnt =  %u\n",
>> +			 le32_to_cpu(stats_buf->low_latency_rate_cnt));
>> +	len += scnprintf(buf + len, buf_len - len, "su_burst_rate_drop_cnt = %u\n",
>> +			 le32_to_cpu(stats_buf->su_burst_rate_drop_cnt));
>> +	len += scnprintf(buf + len, buf_len - len, "su_burst_rate_drop_fail_cnt = %u\n",
>> +			 le32_to_cpu(stats_buf->su_burst_rate_drop_fail_cnt));
>> +	len += scnprintf(buf + len, buf_len - len, "rate_retry_mcs_drop_cnt = %u\n",
>> +			 le32_to_cpu(stats_buf->rate_retry_mcs_drop_cnt));
>> +
>> +	len += scnprintf(buf + len, buf_len - len, "\nPER_HISTOGRAM_STATS\n");
>> +	len += print_array_to_buf(buf, len, "mcs_drop_rate", stats_buf->mcs_drop_rate,
>> +				  ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_DROP_COUNTERS, "\n");
>> +	len += print_array_to_buf(buf, len, "per_histogram_count",
>> +				  stats_buf->per_histogram_cnt,
>> +				  ATH12K_HTT_TX_PDEV_STATS_NUM_PER_COUNTERS, "\n\n");
>>   
>>   	stats_req->buf_len = len;
>>   }
>> @@ -5277,6 +5308,9 @@ static int ath12k_dbg_htt_ext_stats_parse(struct ath12k_base *ab,
>>   	case HTT_STATS_TX_PDEV_RATE_STATS_TAG:
>>   		ath12k_htt_print_tx_pdev_rate_stats_tlv(tag_buf, len, stats_req);
>>   		break;
>> +	case HTT_STATS_TX_PDEV_HISTOGRAM_STATS_TAG:
>> +		ath12k_htt_print_histogram_stats_tlv(tag_buf, len, stats_req);
>> +		break;
>>   	case HTT_STATS_RX_PDEV_RATE_STATS_TAG:
>>   		ath12k_htt_print_rx_pdev_rate_stats_tlv(tag_buf, len, stats_req);
>>   		break;
>> diff --git a/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.h b/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.h
>> index c2a02cf8a38b..5fc5d8c00355 100644
>> --- a/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.h
>> +++ b/drivers/net/wireless/ath/ath12k/debugfs_htt_stats.h
>> @@ -237,6 +237,7 @@ enum ath12k_dbg_htt_tlv_tag {
>>   	HTT_STATS_TX_SELFGEN_BE_ERR_STATS_TAG		= 137,
>>   	HTT_STATS_TX_SELFGEN_BE_STATS_TAG		= 138,
>>   	HTT_STATS_TX_SELFGEN_BE_SCHED_STATUS_STATS_TAG	= 139,
>> +	HTT_STATS_TX_PDEV_HISTOGRAM_STATS_TAG		= 144,
>>   	HTT_STATS_TXBF_OFDMA_AX_NDPA_STATS_TAG		= 147,
>>   	HTT_STATS_TXBF_OFDMA_AX_NDP_STATS_TAG		= 148,
>>   	HTT_STATS_TXBF_OFDMA_AX_BRP_STATS_TAG		= 149,
>> @@ -418,6 +419,12 @@ struct ath12k_htt_tx_pdev_mu_ppdu_dist_stats_tlv {
>>   #define ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS   2
>>   #define ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS  2
>>   #define ATH12K_HTT_TX_PDEV_STATS_NUM_11AX_TRIGGER_TYPES   6
>> +#define ATH12K_HTT_TX_PDEV_STATS_NUM_PER_COUNTERS	  101
>> +
>> +#define ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_DROP_COUNTERS \
>> +	(ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS + \
>> +	 ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS + \
>> +	 ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS)
>>   
>>   struct ath12k_htt_tx_pdev_rate_stats_tlv {
>>   	__le32 mac_id_word;
>> @@ -472,6 +479,15 @@ struct ath12k_htt_tx_pdev_rate_stats_tlv {
>>   	__le32 tx_bw_320mhz;
>>   };
>>   
>> +struct ath12k_htt_tx_histogram_stats_tlv {
>> +	__le32 rate_retry_mcs_drop_cnt;
>> +	__le32 mcs_drop_rate[ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_DROP_COUNTERS];
>> +	__le32 per_histogram_cnt[ATH12K_HTT_TX_PDEV_STATS_NUM_PER_COUNTERS];
>> +	__le32 low_latency_rate_cnt;
>> +	__le32 su_burst_rate_drop_cnt;
>> +	__le32 su_burst_rate_drop_fail_cnt;
>> +};
> 
> Since this strcuture represents the message format used between host and firmware, pls add 
> __packed annotation even though it may not have any effect in this case.

looks like I missed this in a few other structs as well, at least:
ath12k_htt_tx_pdev_rate_stats_tlv
ath12k_htt_rx_pdev_rate_ext_stats_tlv

perhaps i'll take this as-is and then have another patch that adds __packed to
all _tlv structs that are missing it?

/jeff


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH ath-next v2] wifi: ath12k: Add support for transmit histogram stats
  2025-06-26 18:18   ` Jeff Johnson
@ 2025-06-26 18:25     ` Jeff Johnson
  2025-06-27  3:44       ` Vasanthakumar Thiagarajan
  0 siblings, 1 reply; 6+ messages in thread
From: Jeff Johnson @ 2025-06-26 18:25 UTC (permalink / raw)
  To: Vasanthakumar Thiagarajan, Roopni Devanathan, ath12k
  Cc: linux-wireless, Saleemuddin Shaik

On 6/26/2025 11:18 AM, Jeff Johnson wrote:
> On 6/26/2025 10:20 AM, Vasanthakumar Thiagarajan wrote:
>> On 6/17/2025 4:51 PM, Roopni Devanathan wrote:
>>> From: Saleemuddin Shaik <quic_saleemud@quicinc.com>
>>> +struct ath12k_htt_tx_histogram_stats_tlv {
>>> +	__le32 rate_retry_mcs_drop_cnt;
>>> +	__le32 mcs_drop_rate[ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_DROP_COUNTERS];
>>> +	__le32 per_histogram_cnt[ATH12K_HTT_TX_PDEV_STATS_NUM_PER_COUNTERS];
>>> +	__le32 low_latency_rate_cnt;
>>> +	__le32 su_burst_rate_drop_cnt;
>>> +	__le32 su_burst_rate_drop_fail_cnt;
>>> +};
>>
>> Since this strcuture represents the message format used between host and firmware, pls add 
>> __packed annotation even though it may not have any effect in this case.
> 
> looks like I missed this in a few other structs as well, at least:
> ath12k_htt_tx_pdev_rate_stats_tlv
> ath12k_htt_rx_pdev_rate_ext_stats_tlv
> 
> perhaps i'll take this as-is and then have another patch that adds __packed to
> all _tlv structs that are missing it?

actually let me fix this instance in pending, and we can fix other existing
ones separately

/jeff

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH ath-next v2] wifi: ath12k: Add support for transmit histogram stats
  2025-06-17 11:21 [PATCH ath-next v2] wifi: ath12k: Add support for transmit histogram stats Roopni Devanathan
  2025-06-26 17:20 ` Vasanthakumar Thiagarajan
@ 2025-06-26 23:15 ` Jeff Johnson
  1 sibling, 0 replies; 6+ messages in thread
From: Jeff Johnson @ 2025-06-26 23:15 UTC (permalink / raw)
  To: ath12k, Roopni Devanathan; +Cc: linux-wireless, Saleemuddin Shaik


On Tue, 17 Jun 2025 16:51:39 +0530, Roopni Devanathan wrote:
> Add support for transmit histogram stats under HTT stats type 9. These
> stats give information about drop count, MCS drop rate, histogram
> count, etc.
> 
> Note: WCN7850 firmware version -
> WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3 does not support tag
> HTT_STATS_TX_PDEV_HISTOGRAM_STATS_TAG(144), currently.
> 
> [...]

Applied, thanks!

[1/1] wifi: ath12k: Add support for transmit histogram stats
      commit: ffc7adb0a121cd72a02095106bd006f44593ee35

Best regards,
-- 
Jeff Johnson <jeff.johnson@oss.qualcomm.com>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH ath-next v2] wifi: ath12k: Add support for transmit histogram stats
  2025-06-26 18:25     ` Jeff Johnson
@ 2025-06-27  3:44       ` Vasanthakumar Thiagarajan
  0 siblings, 0 replies; 6+ messages in thread
From: Vasanthakumar Thiagarajan @ 2025-06-27  3:44 UTC (permalink / raw)
  To: Jeff Johnson, Vasanthakumar Thiagarajan, Roopni Devanathan,
	ath12k
  Cc: linux-wireless, Saleemuddin Shaik



On 6/26/2025 11:55 PM, Jeff Johnson wrote:
> On 6/26/2025 11:18 AM, Jeff Johnson wrote:
>> On 6/26/2025 10:20 AM, Vasanthakumar Thiagarajan wrote:
>>> On 6/17/2025 4:51 PM, Roopni Devanathan wrote:
>>>> From: Saleemuddin Shaik <quic_saleemud@quicinc.com>
>>>> +struct ath12k_htt_tx_histogram_stats_tlv {
>>>> +	__le32 rate_retry_mcs_drop_cnt;
>>>> +	__le32 mcs_drop_rate[ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_DROP_COUNTERS];
>>>> +	__le32 per_histogram_cnt[ATH12K_HTT_TX_PDEV_STATS_NUM_PER_COUNTERS];
>>>> +	__le32 low_latency_rate_cnt;
>>>> +	__le32 su_burst_rate_drop_cnt;
>>>> +	__le32 su_burst_rate_drop_fail_cnt;
>>>> +};
>>>
>>> Since this strcuture represents the message format used between host and firmware, pls add
>>> __packed annotation even though it may not have any effect in this case.
>>
>> looks like I missed this in a few other structs as well, at least:
>> ath12k_htt_tx_pdev_rate_stats_tlv
>> ath12k_htt_rx_pdev_rate_ext_stats_tlv
>>
>> perhaps i'll take this as-is and then have another patch that adds __packed to
>> all _tlv structs that are missing it?
> 
> actually let me fix this instance in pending, and we can fix other existing
> ones separately

Sounds good, thanks.


Vasanth

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-06-27  3:44 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-17 11:21 [PATCH ath-next v2] wifi: ath12k: Add support for transmit histogram stats Roopni Devanathan
2025-06-26 17:20 ` Vasanthakumar Thiagarajan
2025-06-26 18:18   ` Jeff Johnson
2025-06-26 18:25     ` Jeff Johnson
2025-06-27  3:44       ` Vasanthakumar Thiagarajan
2025-06-26 23:15 ` Jeff Johnson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox