wlan-ap-Telecominfraproject/feeds/ipq95xx/mac80211/patches/qca/657-ath12k-fix-NSS-value-update-in-rx-stats.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

80 lines
3.5 KiB
Diff

From 53d1ec2c397765d18f187105761bf5582ba36ea5 Mon Sep 17 00:00:00 2001
From: Thiraviyam Mariyappan <quic_tmariyap@quicinc.com>
Date: Thu, 11 Aug 2022 16:05:57 +0530
Subject: [PATCH] ath12k: fix NSS value update in rx stats
Current code update NSS value to (n-1) spatial stream in ext_rx_stats. So that,
values for 4x4, 3x3, 2x2, 1x1 SS updated to 3x3, 2x2, 1x1 SS.
We can fix this issue by increment the nss value by 1 whi1e update the ppdu info.
Signed-off-by: Thiraviyam Mariyappan <quic_tmariyap@quicinc.com>
---
drivers/net/wireless/ath/ath12k/dp_mon.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
--- a/drivers/net/wireless/ath/ath12k/dp_mon.c
+++ b/drivers/net/wireless/ath/ath12k/dp_mon.c
@@ -105,7 +105,7 @@ static void ath12k_dp_mon_parse_vht_sig_
if (ppdu_info->is_stbc && nsts > 0)
nsts = ((nsts + 1) >> 1) - 1;
- ppdu_info->nss = u32_get_bits(nsts, VHT_SIG_SU_NSS_MASK);
+ ppdu_info->nss = u32_get_bits(nsts, VHT_SIG_SU_NSS_MASK) + 1;
ppdu_info->bw = u32_get_bits(info0, HAL_RX_VHT_SIG_A_INFO_INFO0_BW);
ppdu_info->beamformed = u32_get_bits(info1,
HAL_RX_VHT_SIG_A_INFO_INFO1_BEAMFORMED);
@@ -131,7 +131,7 @@ static void ath12k_dp_mon_parse_ht_sig(u
ppdu_info->is_stbc = u32_get_bits(info1, HAL_RX_HT_SIG_INFO_INFO1_STBC);
ppdu_info->ldpc = u32_get_bits(info1, HAL_RX_HT_SIG_INFO_INFO1_FEC_CODING);
ppdu_info->gi = u32_get_bits(info1, HAL_RX_HT_SIG_INFO_INFO1_GI);
- ppdu_info->nss = (ppdu_info->mcs >> 3);
+ ppdu_info->nss = (ppdu_info->mcs >> 3) + 1;
}
static void ath12k_dp_mon_parse_l_sig_b(u8 *tlv_data,
@@ -240,7 +240,7 @@ static void ath12k_dp_mon_parse_he_sig_b
value = value << HE_STA_ID_SHIFT;
ppdu_info->he_data4 |= value;
- ppdu_info->nss = u32_get_bits(info0, HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_NSTS);
+ ppdu_info->nss = u32_get_bits(info0, HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_NSTS) + 1;
ppdu_info->beamformed = u32_get_bits(info0,
HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_TXBF);
}
@@ -269,7 +269,7 @@ static void ath12k_dp_mon_parse_he_sig_b
value = value << HE_STA_ID_SHIFT;
ppdu_info->he_data4 |= value;
- ppdu_info->nss = u32_get_bits(info0, HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_NSTS);
+ ppdu_info->nss = u32_get_bits(info0, HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_NSTS) + 1;
}
static void ath12k_dp_mon_parse_he_sig_b1_mu(u8 *tlv_data,
@@ -565,7 +565,7 @@ static void ath12k_dp_mon_parse_he_sig_s
ppdu_info->is_stbc = u32_get_bits(info1, HAL_RX_HE_SIG_A_SU_INFO_INFO1_STBC);
ppdu_info->beamformed = u32_get_bits(info1, HAL_RX_HE_SIG_A_SU_INFO_INFO1_TXBF);
dcm = u32_get_bits(info0, HAL_RX_HE_SIG_A_SU_INFO_INFO0_DCM);
- ppdu_info->nss = u32_get_bits(info0, HAL_RX_HE_SIG_A_SU_INFO_INFO0_NSTS);
+ ppdu_info->nss = u32_get_bits(info0, HAL_RX_HE_SIG_A_SU_INFO_INFO0_NSTS) + 1;
ppdu_info->dcm = dcm;
}
@@ -1044,7 +1044,7 @@ ath12k_dp_mon_hal_rx_parse_eht_sig_non_m
nss = u32_get_bits(__le32_to_cpu(user_info->info0),
HAL_RX_EHT_SIG_NON_MUMIMO_USER_INFO0_NSS);
ppdu_info->eht_user_info[user_idx] |= (nss << EHT_USER_NSS_SHIFT);
- ppdu_info->nss = nss;
+ ppdu_info->nss = nss + 1;
beamformed = u32_get_bits(__le32_to_cpu(user_info->info0),
HAL_RX_EHT_SIG_NON_MUMIMO_USER_INFO0_BEAMFORMED);
@@ -1279,7 +1279,7 @@ ath12k_dp_mon_hal_rx_parse_receive_user_
ppdu_info->mcs = u32_get_bits(__le32_to_cpu(rx_usr_info->info1),
HAL_RX_USR_INFO1_MCS);
ppdu_info->nss = u32_get_bits(__le32_to_cpu(rx_usr_info->info2),
- HAL_RX_USR_INFO2_NSS);
+ HAL_RX_USR_INFO2_NSS) + 1;
if (user_id < HAL_MAX_UL_MU_USERS) {
mon_rx_user_status =