wifi: ath12k: Support MBSSID Control Frame Stats

Add support to request MBSSID control frame stats from firmware
through HTT stats type 54. These stats give information such as
basic trigger, BSR trigger, multi-user RTS and uplink MUMIMO
trigger within and across various BSS.

Note: WCN7850 firmware version -
WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4 does not
support HTT stats type 54.

Sample output:
-------------
echo 54 > /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_MBSSID_CTRL_FRAME_STATS_TLV:
mac_id = 0
basic_trigger_across_bss = 0
basic_trigger_within_bss = 0
bsr_trigger_across_bss = 0
bsr_trigger_within_bss = 0
mu_rts_across_bss = 0
mu_rts_within_bss = 0
ul_mumimo_trigger_across_bss = 0
ul_mumimo_trigger_within_bss = 0

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00214-QCAHKSWPL_SILICONZ-1

Signed-off-by: Sidhanta Sahu <quic_sidhanta@quicinc.com>
Signed-off-by: Roopni Devanathan <quic_rdevanat@quicinc.com>
Acked-by: Kalle Valo <kvalo@kernel.org>
Link: https://patch.msgid.link/20241105052854.2118987-1-quic_rdevanat@quicinc.com
Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
This commit is contained in:
Sidhanta Sahu
2024-11-05 10:58:54 +05:30
committed by Jeff Johnson
parent c8f314703b
commit ea58aae845
2 changed files with 57 additions and 0 deletions

View File

@@ -3296,6 +3296,45 @@ ath12k_htt_print_tx_pdev_rate_stats_be_ofdma_tlv(const void *tag_buf, u16 tag_le
stats_req->buf_len = len;
}
static void
ath12k_htt_print_pdev_mbssid_ctrl_frame_stats_tlv(const void *tag_buf, u16 tag_len,
struct debug_htt_stats_req *stats_req)
{
const struct ath12k_htt_pdev_mbssid_ctrl_frame_tlv *htt_stats_buf = tag_buf;
u8 *buf = stats_req->buf;
u32 len = stats_req->buf_len;
u32 buf_len = ATH12K_HTT_STATS_BUF_SIZE;
u32 mac_id_word;
if (tag_len < sizeof(*htt_stats_buf))
return;
mac_id_word = le32_to_cpu(htt_stats_buf->mac_id__word);
len += scnprintf(buf + len, buf_len - len, "HTT_MBSSID_CTRL_FRAME_STATS_TLV:\n");
len += scnprintf(buf + len, buf_len - len, "mac_id = %u\n",
u32_get_bits(mac_id_word, ATH12K_HTT_STATS_MAC_ID));
len += scnprintf(buf + len, buf_len - len, "basic_trigger_across_bss = %u\n",
le32_to_cpu(htt_stats_buf->basic_trigger_across_bss));
len += scnprintf(buf + len, buf_len - len, "basic_trigger_within_bss = %u\n",
le32_to_cpu(htt_stats_buf->basic_trigger_within_bss));
len += scnprintf(buf + len, buf_len - len, "bsr_trigger_across_bss = %u\n",
le32_to_cpu(htt_stats_buf->bsr_trigger_across_bss));
len += scnprintf(buf + len, buf_len - len, "bsr_trigger_within_bss = %u\n",
le32_to_cpu(htt_stats_buf->bsr_trigger_within_bss));
len += scnprintf(buf + len, buf_len - len, "mu_rts_across_bss = %u\n",
le32_to_cpu(htt_stats_buf->mu_rts_across_bss));
len += scnprintf(buf + len, buf_len - len, "mu_rts_within_bss = %u\n",
le32_to_cpu(htt_stats_buf->mu_rts_within_bss));
len += scnprintf(buf + len, buf_len - len, "ul_mumimo_trigger_across_bss = %u\n",
le32_to_cpu(htt_stats_buf->ul_mumimo_trigger_across_bss));
len += scnprintf(buf + len, buf_len - len,
"ul_mumimo_trigger_within_bss = %u\n\n",
le32_to_cpu(htt_stats_buf->ul_mumimo_trigger_within_bss));
stats_req->buf_len = len;
}
static int ath12k_dbg_htt_ext_stats_parse(struct ath12k_base *ab,
u16 tag, u16 len, const void *tag_buf,
void *user_data)
@@ -3502,6 +3541,10 @@ static int ath12k_dbg_htt_ext_stats_parse(struct ath12k_base *ab,
case HTT_STATS_TX_PDEV_RATE_STATS_BE_OFDMA_TAG:
ath12k_htt_print_tx_pdev_rate_stats_be_ofdma_tlv(tag_buf, len, stats_req);
break;
case HTT_STATS_PDEV_MBSSID_CTRL_FRAME_STATS_TAG:
ath12k_htt_print_pdev_mbssid_ctrl_frame_stats_tlv(tag_buf, len,
stats_req);
break;
default:
break;
}

View File

@@ -142,6 +142,7 @@ enum ath12k_dbg_htt_ext_stats_type {
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,
ATH12K_DGB_HTT_EXT_STATS_PDEV_MBSSID_CTRL_FRAME = 54,
/* keep this last */
ATH12K_DBG_HTT_NUM_EXT_STATS,
@@ -214,6 +215,7 @@ enum ath12k_dbg_htt_tlv_tag {
HTT_STATS_DMAC_RESET_STATS_TAG = 155,
HTT_STATS_PHY_TPC_STATS_TAG = 157,
HTT_STATS_PDEV_SCHED_ALGO_OFDMA_STATS_TAG = 165,
HTT_STATS_PDEV_MBSSID_CTRL_FRAME_STATS_TAG = 176,
HTT_STATS_MAX_TAG,
};
@@ -1322,4 +1324,16 @@ struct ath12k_htt_tx_pdev_rate_stats_be_ofdma_tlv {
__le32 be_ofdma_eht_sig_mcs[ATH12K_HTT_TX_PDEV_NUM_EHT_SIG_MCS_CNTRS];
} __packed;
struct ath12k_htt_pdev_mbssid_ctrl_frame_tlv {
__le32 mac_id__word;
__le32 basic_trigger_across_bss;
__le32 basic_trigger_within_bss;
__le32 bsr_trigger_across_bss;
__le32 bsr_trigger_within_bss;
__le32 mu_rts_across_bss;
__le32 mu_rts_within_bss;
__le32 ul_mumimo_trigger_across_bss;
__le32 ul_mumimo_trigger_within_bss;
} __packed;
#endif