]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: ath12k: Move HT/VHT SIG processing to Wi-Fi 7 module
authorAlok Singh <quic_aloksing@quicinc.com>
Mon, 10 Nov 2025 10:37:07 +0000 (16:07 +0530)
committerJeff Johnson <jeff.johnson@oss.qualcomm.com>
Tue, 11 Nov 2025 15:21:33 +0000 (07:21 -0800)
Separate Wi-Fi 7-specific monitor parsing from ath12k common code
to improve modularity and keep Wi-Fi 7 logic within the Wi-Fi 7 module.

Move following HT/VHT SIG parsing functions to wifi7/dp_mon.c and
rename the functions with the ath12k_wifi7 prefix:
- ath12k_dp_mon_parse_vht_sig_a()
- ath12k_dp_mon_parse_ht_sig()

Export helper functions required by the ath12k_wifi7 module.

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.5-01651-QCAHKSWPL_SILICONZ-1

Signed-off-by: Alok Singh <quic_aloksing@quicinc.com>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
Reviewed-by: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
Link: https://patch.msgid.link/20251110103713.3484779-7-quic_aloksing@quicinc.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
drivers/net/wireless/ath/ath12k/dp_mon.c
drivers/net/wireless/ath/ath12k/dp_mon.h
drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c

index d3e662399c3116906b9ea54f4deb4cec8475355f..879dc86fcdb772d76bc16b8ede16d5a431fa83c5 100644 (file)
@@ -81,62 +81,6 @@ ath12k_dp_mon_rx_populate_mu_user_info(const struct hal_rx_ppdu_end_user_stats *
 }
 EXPORT_SYMBOL(ath12k_dp_mon_rx_populate_mu_user_info);
 
-void ath12k_dp_mon_parse_vht_sig_a(const struct hal_rx_vht_sig_a_info *vht_sig,
-                                  struct hal_rx_mon_ppdu_info *ppdu_info)
-{
-       u32 nsts, info0, info1;
-       u8 gi_setting;
-
-       info0 = __le32_to_cpu(vht_sig->info0);
-       info1 = __le32_to_cpu(vht_sig->info1);
-
-       ppdu_info->ldpc = u32_get_bits(info1, HAL_RX_VHT_SIG_A_INFO_INFO1_SU_MU_CODING);
-       ppdu_info->mcs = u32_get_bits(info1, HAL_RX_VHT_SIG_A_INFO_INFO1_MCS);
-       gi_setting = u32_get_bits(info1, HAL_RX_VHT_SIG_A_INFO_INFO1_GI_SETTING);
-       switch (gi_setting) {
-       case HAL_RX_VHT_SIG_A_NORMAL_GI:
-               ppdu_info->gi = HAL_RX_GI_0_8_US;
-               break;
-       case HAL_RX_VHT_SIG_A_SHORT_GI:
-       case HAL_RX_VHT_SIG_A_SHORT_GI_AMBIGUITY:
-               ppdu_info->gi = HAL_RX_GI_0_4_US;
-               break;
-       }
-
-       ppdu_info->is_stbc = u32_get_bits(info0, HAL_RX_VHT_SIG_A_INFO_INFO0_STBC);
-       nsts = u32_get_bits(info0, HAL_RX_VHT_SIG_A_INFO_INFO0_NSTS);
-       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->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);
-       ppdu_info->vht_flag_values5 = u32_get_bits(info0,
-                                                  HAL_RX_VHT_SIG_A_INFO_INFO0_GROUP_ID);
-       ppdu_info->vht_flag_values3[0] = (((ppdu_info->mcs) << 4) |
-                                           ppdu_info->nss);
-       ppdu_info->vht_flag_values2 = ppdu_info->bw;
-       ppdu_info->vht_flag_values4 =
-               u32_get_bits(info1, HAL_RX_VHT_SIG_A_INFO_INFO1_SU_MU_CODING);
-}
-EXPORT_SYMBOL(ath12k_dp_mon_parse_vht_sig_a);
-
-void ath12k_dp_mon_parse_ht_sig(const struct hal_rx_ht_sig_info *ht_sig,
-                               struct hal_rx_mon_ppdu_info *ppdu_info)
-{
-       u32 info0 = __le32_to_cpu(ht_sig->info0);
-       u32 info1 = __le32_to_cpu(ht_sig->info1);
-
-       ppdu_info->mcs = u32_get_bits(info0, HAL_RX_HT_SIG_INFO_INFO0_MCS);
-       ppdu_info->bw = u32_get_bits(info0, HAL_RX_HT_SIG_INFO_INFO0_BW);
-       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);
-}
-EXPORT_SYMBOL(ath12k_dp_mon_parse_ht_sig);
-
 void ath12k_dp_mon_parse_l_sig_b(const struct hal_rx_lsig_b_info *lsigb,
                                 struct hal_rx_mon_ppdu_info *ppdu_info)
 {
index 1d2ec4072a83cac76f608c96df70c9e188873bb3..86d0c18d8c07c1684ff0c8d0c63b118759166118 100644 (file)
@@ -113,8 +113,6 @@ int
 ath12k_dp_mon_parse_status_buf(struct ath12k_pdev_dp *dp_pdev,
                               struct ath12k_mon_data *pmon,
                               const struct dp_mon_packet_info *packet_info);
-void ath12k_dp_mon_parse_ht_sig(const struct hal_rx_ht_sig_info *ht_sig,
-                               struct hal_rx_mon_ppdu_info *ppdu_info);
 void
 ath12k_dp_mon_parse_eht_sig_hdr(struct hal_rx_mon_ppdu_info *ppdu_info,
                                const void *tlv_data);
@@ -135,8 +133,6 @@ ath12k_dp_mon_parse_he_sig_b2_ofdma(const struct hal_rx_he_sig_b2_ofdma_info *of
 void
 ath12k_dp_mon_parse_he_sig_b2_mu(const struct hal_rx_he_sig_b2_mu_info *he_sig_b2_mu,
                                 struct hal_rx_mon_ppdu_info *ppdu_info);
-void ath12k_dp_mon_parse_vht_sig_a(const struct hal_rx_vht_sig_a_info *vht_sig,
-                                  struct hal_rx_mon_ppdu_info *ppdu_info);
 void ath12k_dp_mon_parse_he_sig_su(const struct hal_rx_he_sig_a_su_info *he_sig_a,
                                   struct hal_rx_mon_ppdu_info *ppdu_info);
 void
index abdfd3cfd0e48048fc2f42fa6a5e58cdb8e16222..0c83df4be9daf31b08e2f16a817ffaba975d1d0f 100644 (file)
@@ -20,6 +20,62 @@ ath12k_wifi7_dp_mon_rx_memset_ppdu_info(struct hal_rx_mon_ppdu_info *ppdu_info)
        ppdu_info->peer_id = HAL_INVALID_PEERID;
 }
 
+static void
+ath12k_wifi7_dp_mon_parse_vht_sig_a(const struct hal_rx_vht_sig_a_info *vht_sig,
+                                   struct hal_rx_mon_ppdu_info *ppdu_info)
+{
+       u32 nsts, info0, info1;
+       u8 gi_setting;
+
+       info0 = __le32_to_cpu(vht_sig->info0);
+       info1 = __le32_to_cpu(vht_sig->info1);
+
+       ppdu_info->ldpc = u32_get_bits(info1, HAL_RX_VHT_SIG_A_INFO_INFO1_SU_MU_CODING);
+       ppdu_info->mcs = u32_get_bits(info1, HAL_RX_VHT_SIG_A_INFO_INFO1_MCS);
+       gi_setting = u32_get_bits(info1, HAL_RX_VHT_SIG_A_INFO_INFO1_GI_SETTING);
+       switch (gi_setting) {
+       case HAL_RX_VHT_SIG_A_NORMAL_GI:
+               ppdu_info->gi = HAL_RX_GI_0_8_US;
+               break;
+       case HAL_RX_VHT_SIG_A_SHORT_GI:
+       case HAL_RX_VHT_SIG_A_SHORT_GI_AMBIGUITY:
+               ppdu_info->gi = HAL_RX_GI_0_4_US;
+               break;
+       }
+
+       ppdu_info->is_stbc = u32_get_bits(info0, HAL_RX_VHT_SIG_A_INFO_INFO0_STBC);
+       nsts = u32_get_bits(info0, HAL_RX_VHT_SIG_A_INFO_INFO0_NSTS);
+       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->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);
+       ppdu_info->vht_flag_values5 = u32_get_bits(info0,
+                                                  HAL_RX_VHT_SIG_A_INFO_INFO0_GROUP_ID);
+       ppdu_info->vht_flag_values3[0] = (((ppdu_info->mcs) << 4) |
+                                           ppdu_info->nss);
+       ppdu_info->vht_flag_values2 = ppdu_info->bw;
+       ppdu_info->vht_flag_values4 =
+               u32_get_bits(info1, HAL_RX_VHT_SIG_A_INFO_INFO1_SU_MU_CODING);
+}
+
+static void
+ath12k_wifi7_dp_mon_parse_ht_sig(const struct hal_rx_ht_sig_info *ht_sig,
+                                struct hal_rx_mon_ppdu_info *ppdu_info)
+{
+       u32 info0 = __le32_to_cpu(ht_sig->info0);
+       u32 info1 = __le32_to_cpu(ht_sig->info1);
+
+       ppdu_info->mcs = u32_get_bits(info0, HAL_RX_HT_SIG_INFO_INFO0_MCS);
+       ppdu_info->bw = u32_get_bits(info0, HAL_RX_HT_SIG_INFO_INFO0_BW);
+       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);
+}
+
 static enum hal_rx_mon_status
 ath12k_wifi7_dp_mon_rx_parse_status_tlv(struct ath12k_pdev_dp *dp_pdev,
                                        struct ath12k_mon_data *pmon,
@@ -158,7 +214,7 @@ ath12k_wifi7_dp_mon_rx_parse_status_tlv(struct ath12k_pdev_dp *dp_pdev,
                break;
        }
        case HAL_PHYRX_HT_SIG:
-               ath12k_dp_mon_parse_ht_sig(tlv_data, ppdu_info);
+               ath12k_wifi7_dp_mon_parse_ht_sig(tlv_data, ppdu_info);
                break;
 
        case HAL_PHYRX_L_SIG_B:
@@ -170,7 +226,7 @@ ath12k_wifi7_dp_mon_rx_parse_status_tlv(struct ath12k_pdev_dp *dp_pdev,
                break;
 
        case HAL_PHYRX_VHT_SIG_A:
-               ath12k_dp_mon_parse_vht_sig_a(tlv_data, ppdu_info);
+               ath12k_wifi7_dp_mon_parse_vht_sig_a(tlv_data, ppdu_info);
                break;
 
        case HAL_PHYRX_HE_SIG_A_SU:
@@ -819,7 +875,7 @@ ath12k_wifi7_dp_mon_tx_parse_status_tlv(struct ath12k_base *ab,
                break;
 
        case HAL_MACTX_VHT_SIG_A:
-               ath12k_dp_mon_parse_vht_sig_a(tlv_data, &tx_ppdu_info->rx_status);
+               ath12k_wifi7_dp_mon_parse_vht_sig_a(tlv_data, &tx_ppdu_info->rx_status);
                break;
 
        case HAL_MACTX_L_SIG_A: