]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: ath12k: Support SoC Common Stats
authorDinesh Karthikeyan <quic_dinek@quicinc.com>
Fri, 15 Nov 2024 06:28:53 +0000 (11:58 +0530)
committerJeff Johnson <quic_jjohnson@quicinc.com>
Wed, 20 Nov 2024 15:34:44 +0000 (07:34 -0800)
Add support to request SoC stat from firmware through HTT stat
type 38. This stat gives drop count of SoC.

Note: MCC firmware version -
WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4 does not
support tag HTT_STATS_SOC_TXRX_STATS_COMMON_TAG(125).

Sample output:
-------------
echo 38 > /sys/kernel/debug/ath12k/pci-0000\:06\:00.0/mac0/htt_stats_type
cat /sys/kernel/debug/ath12k/pci-0000\:06\:00.0/mac0/htt_stats
HTT_SOC_COMMON_STATS_TLV:
soc_drop_count = 0x0000000000000000

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1

Signed-off-by: Dinesh Karthikeyan <quic_dinek@quicinc.com>
Signed-off-by: Roopni Devanathan <quic_rdevanat@quicinc.com>
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Acked-by: Kalle Valo <kvalo@kernel.org>
Link: https://patch.msgid.link/20241115062854.1919672-4-quic_rdevanat@quicinc.com
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
drivers/net/wireless/ath/ath12k/debugfs_htt_stats.c
drivers/net/wireless/ath/ath12k/debugfs_htt_stats.h

index 78b9d8efa9578b269fb7541710b20a63dd953bcf..f310e95a65f77bb60d3cbd546ae3887c34aa4c43 100644 (file)
@@ -2858,6 +2858,29 @@ ath12k_htt_print_phy_tpc_stats_tlv(const void *tag_buf, u16 tag_len,
        stats_req->buf_len = len;
 }
 
+static void
+ath12k_htt_print_soc_txrx_stats_common_tlv(const void *tag_buf, u16 tag_len,
+                                          struct debug_htt_stats_req *stats_req)
+{
+       const struct ath12k_htt_t2h_soc_txrx_stats_common_tlv *htt_stats_buf = tag_buf;
+       u64 drop_count;
+       u32 len = stats_req->buf_len;
+       u32 buf_len = ATH12K_HTT_STATS_BUF_SIZE;
+       u8 *buf = stats_req->buf;
+
+       if (tag_len < sizeof(*htt_stats_buf))
+               return;
+
+       drop_count = ath12k_le32hilo_to_u64(htt_stats_buf->inv_peers_msdu_drop_count_hi,
+                                           htt_stats_buf->inv_peers_msdu_drop_count_lo);
+
+       len += scnprintf(buf + len, buf_len - len, "HTT_SOC_COMMON_STATS_TLV:\n");
+       len += scnprintf(buf + len, buf_len - len, "soc_drop_count = %llu\n\n",
+                        drop_count);
+
+       stats_req->buf_len = len;
+}
+
 static void
 ath12k_htt_print_dmac_reset_stats_tlv(const void *tag_buf, u16 tag_len,
                                      struct debug_htt_stats_req *stats_req)
@@ -3202,6 +3225,9 @@ static int ath12k_dbg_htt_ext_stats_parse(struct ath12k_base *ab,
        case HTT_STATS_PHY_TPC_STATS_TAG:
                ath12k_htt_print_phy_tpc_stats_tlv(tag_buf, len, stats_req);
                break;
+       case HTT_STATS_SOC_TXRX_STATS_COMMON_TAG:
+               ath12k_htt_print_soc_txrx_stats_common_tlv(tag_buf, len, stats_req);
+               break;
        case HTT_STATS_DMAC_RESET_STATS_TAG:
                ath12k_htt_print_dmac_reset_stats_tlv(tag_buf, len, stats_req);
                break;
index 10d7ca9c02f420bd0e14749b4a0417fe35e8d9a9..c07b60636c22da58f3a81ba1f805420d3b6fcc68 100644 (file)
@@ -137,6 +137,7 @@ enum ath12k_dbg_htt_ext_stats_type {
        ATH12K_DBG_HTT_EXT_STATS_PDEV_OBSS_PD_STATS     = 23,
        ATH12K_DBG_HTT_EXT_STATS_DLPAGER_STATS          = 36,
        ATH12K_DBG_HTT_EXT_PHY_COUNTERS_AND_PHY_STATS   = 37,
+       ATH12K_DBG_HTT_EXT_VDEVS_TXRX_STATS             = 38,
        ATH12K_DBG_HTT_EXT_STATS_SOC_ERROR              = 45,
        ATH12K_DBG_HTT_EXT_STATS_PDEV_SCHED_ALGO        = 49,
        ATH12K_DBG_HTT_EXT_STATS_MANDATORY_MUOFDMA      = 51,
@@ -201,6 +202,7 @@ enum ath12k_dbg_htt_tlv_tag {
        HTT_STATS_PHY_STATS_TAG                         = 122,
        HTT_STATS_PHY_RESET_COUNTERS_TAG                = 123,
        HTT_STATS_PHY_RESET_STATS_TAG                   = 124,
+       HTT_STATS_SOC_TXRX_STATS_COMMON_TAG             = 125,
        HTT_STATS_MU_PPDU_DIST_TAG                      = 129,
        HTT_STATS_TX_PDEV_MUMIMO_GRP_STATS_TAG          = 130,
        HTT_STATS_TX_PDEV_RATE_STATS_BE_OFDMA_TAG       = 135,
@@ -1183,6 +1185,11 @@ struct ath12k_htt_phy_tpc_stats_tlv {
        __le32 sub_band_txpower[ATH12K_HTT_MAX_CH_PWR_INFO_SIZE];
 } __packed;
 
+struct ath12k_htt_t2h_soc_txrx_stats_common_tlv {
+       __le32 inv_peers_msdu_drop_count_hi;
+       __le32 inv_peers_msdu_drop_count_lo;
+} __packed;
+
 struct ath12k_htt_dmac_reset_stats_tlv {
        __le32 reset_count;
        __le32 reset_time_lo_ms;