ath11k: Send PPDU_STATS_CFG with proper pdev mask to firmware
authorRameshkumar Sundaram <ramess@codeaurora.org>
Wed, 10 Nov 2021 15:10:48 +0000 (17:10 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 12 Nov 2021 08:01:15 +0000 (10:01 +0200)
HTT_PPDU_STATS_CFG_PDEV_ID bit mask for target FW PPDU stats request message
was set as bit 8 to 15. Bit 8 is reserved for soc stats and pdev id starts from
bit 9. Hence change the bitmask as bit 9 to 15 and fill the proper pdev id in
the request message.

In commit 701e48a43e15 ("ath11k: add packet log support for QCA6390"), both
HTT_PPDU_STATS_CFG_PDEV_ID and pdev_mask were changed, but this pdev_mask
calculation is not valid for platforms which has multiple pdevs with 1 rxdma
per pdev, as this is writing same value(i.e. 2) for all pdevs.  Hence fixed it
to consider pdev_idx as well, to make it compatible for both single and multi
pd cases.

Tested on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-01092-QCAHKSWPL_SILICONZ-1
Tested on: IPQ6018 hw1.0 WLAN.HK.2.5.0.1-01067-QCAHKSWPL_SILICONZ-1

Fixes: 701e48a43e15 ("ath11k: add packet log support for QCA6390")

Co-developed-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210721212029.142388-10-jouni@codeaurora.org
drivers/net/wireless/ath/ath11k/dp.h
drivers/net/wireless/ath/ath11k/dp_tx.c

index 4794ca04f21363a9f676cfbbff0306b198243880..f524d19aca349096adb2f875616be5acf88fad45 100644 (file)
@@ -517,7 +517,8 @@ struct htt_ppdu_stats_cfg_cmd {
 } __packed;
 
 #define HTT_PPDU_STATS_CFG_MSG_TYPE            GENMASK(7, 0)
-#define HTT_PPDU_STATS_CFG_PDEV_ID             GENMASK(15, 8)
+#define HTT_PPDU_STATS_CFG_SOC_STATS           BIT(8)
+#define HTT_PPDU_STATS_CFG_PDEV_ID             GENMASK(15, 9)
 #define HTT_PPDU_STATS_CFG_TLV_TYPE_BITMASK    GENMASK(31, 16)
 
 enum htt_ppdu_stats_tag_type {
index 879fb2a9dc0c6548bdf3d37d92848b77904072b4..10b76f6f710b023d0c1a7d01862b889c32edefff 100644 (file)
@@ -903,7 +903,7 @@ int ath11k_dp_tx_htt_h2t_ppdu_stats_req(struct ath11k *ar, u32 mask)
                cmd->msg = FIELD_PREP(HTT_PPDU_STATS_CFG_MSG_TYPE,
                                      HTT_H2T_MSG_TYPE_PPDU_STATS_CFG);
 
-               pdev_mask = 1 << (i + 1);
+               pdev_mask = 1 << (ar->pdev_idx + i);
                cmd->msg |= FIELD_PREP(HTT_PPDU_STATS_CFG_PDEV_ID, pdev_mask);
                cmd->msg |= FIELD_PREP(HTT_PPDU_STATS_CFG_TLV_TYPE_BITMASK, mask);