From 9a31dede43adecc9e4c20673dc1b78c83014a22a Mon Sep 17 00:00:00 2001 From: Adrian Nicolau Date: Mon, 2 Mar 2026 13:55:43 +0200 Subject: [PATCH 1/5] Revert "wifi: ath12k: fix the fetching of combined rssi" This reverts commit 7695fa71c1d50a375e54426421acbc8d457bc5a3. --- drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c b/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c index bd741532b7dc8..94dea599dc106 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c +++ b/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c @@ -1696,15 +1696,15 @@ ath12k_wifi7_dp_mon_rx_parse_status_tlv(struct ath12k_pdev_dp *dp_pdev, const struct hal_rx_phyrx_rssi_legacy_info *rssi = tlv_data; info[0] = __le32_to_cpu(rssi->info0); - info[2] = __le32_to_cpu(rssi->info2); + info[1] = __le32_to_cpu(rssi->info1); /* TODO: Please note that the combined rssi will not be accurate * in MU case. Rssi in MU needs to be retrieved from * PHYRX_OTHER_RECEIVE_INFO TLV. */ ppdu_info->rssi_comb = - u32_get_bits(info[2], - HAL_RX_RSSI_LEGACY_INFO_INFO2_RSSI_COMB_PPDU); + u32_get_bits(info[1], + HAL_RX_RSSI_LEGACY_INFO_INFO1_RSSI_COMB); ppdu_info->bw = u32_get_bits(info[0], HAL_RX_RSSI_LEGACY_INFO_INFO0_RX_BW); From 7d47d3b0d6022104a923de87acfe77966d785b56 Mon Sep 17 00:00:00 2001 From: Adrian Nicolau Date: Mon, 2 Mar 2026 16:12:31 +0200 Subject: [PATCH 2/5] Revert "Revert "wifi: ath12k: fix the fetching of combined rssi"" This reverts commit 9a31dede43adecc9e4c20673dc1b78c83014a22a. --- drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c b/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c index 94dea599dc106..bd741532b7dc8 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c +++ b/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c @@ -1696,15 +1696,15 @@ ath12k_wifi7_dp_mon_rx_parse_status_tlv(struct ath12k_pdev_dp *dp_pdev, const struct hal_rx_phyrx_rssi_legacy_info *rssi = tlv_data; info[0] = __le32_to_cpu(rssi->info0); - info[1] = __le32_to_cpu(rssi->info1); + info[2] = __le32_to_cpu(rssi->info2); /* TODO: Please note that the combined rssi will not be accurate * in MU case. Rssi in MU needs to be retrieved from * PHYRX_OTHER_RECEIVE_INFO TLV. */ ppdu_info->rssi_comb = - u32_get_bits(info[1], - HAL_RX_RSSI_LEGACY_INFO_INFO1_RSSI_COMB); + u32_get_bits(info[2], + HAL_RX_RSSI_LEGACY_INFO_INFO2_RSSI_COMB_PPDU); ppdu_info->bw = u32_get_bits(info[0], HAL_RX_RSSI_LEGACY_INFO_INFO0_RX_BW); From aa761bf6eea3670e530143fadaa91f6cd79a4502 Mon Sep 17 00:00:00 2001 From: Adrian Nicolau Date: Mon, 2 Mar 2026 16:19:43 +0200 Subject: [PATCH 3/5] fix struct hal_rx_phyrx_rssi_legacy_info --- drivers/net/wireless/ath/ath12k/wifi7/hal_rx.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/ath/ath12k/wifi7/hal_rx.h b/drivers/net/wireless/ath/ath12k/wifi7/hal_rx.h index ac2a8ac03288f..62b1ed806b700 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/hal_rx.h +++ b/drivers/net/wireless/ath/ath12k/wifi7/hal_rx.h @@ -272,9 +272,11 @@ enum hal_rx_ul_reception_type { struct hal_rx_phyrx_rssi_legacy_info { __le32 info0; - __le32 rsvd0[39]; + __le32 rsvd0[4]; __le32 info1; + __le32 rsvd1[34]; __le32 info2; + __le32 rsvd2; } __packed; #define HAL_RX_MPDU_START_INFO0_PPDU_ID GENMASK(31, 16) From 96d6e02a3d890a651d203208e7c8c60be29a8124 Mon Sep 17 00:00:00 2001 From: Adrian Nicolau Date: Mon, 2 Mar 2026 17:14:14 +0200 Subject: [PATCH 4/5] align with qcom backports --- drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c | 2 +- drivers/net/wireless/ath/ath12k/wifi7/hal_rx.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c b/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c index bd741532b7dc8..30c3d820b1555 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c +++ b/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c @@ -1704,7 +1704,7 @@ ath12k_wifi7_dp_mon_rx_parse_status_tlv(struct ath12k_pdev_dp *dp_pdev, */ ppdu_info->rssi_comb = u32_get_bits(info[2], - HAL_RX_RSSI_LEGACY_INFO_INFO2_RSSI_COMB_PPDU); + HAL_RX_RSSI_LEGACY_INFO_INFO2_RSSI_COMB); ppdu_info->bw = u32_get_bits(info[0], HAL_RX_RSSI_LEGACY_INFO_INFO0_RX_BW); diff --git a/drivers/net/wireless/ath/ath12k/wifi7/hal_rx.h b/drivers/net/wireless/ath/ath12k/wifi7/hal_rx.h index 62b1ed806b700..d9b7afead9148 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/hal_rx.h +++ b/drivers/net/wireless/ath/ath12k/wifi7/hal_rx.h @@ -267,7 +267,7 @@ enum hal_rx_ul_reception_type { #define HAL_RX_RSSI_LEGACY_INFO_INFO0_RECEPTION GENMASK(3, 0) #define HAL_RX_RSSI_LEGACY_INFO_INFO0_RX_BW GENMASK(7, 5) -#define HAL_RX_RSSI_LEGACY_INFO_INFO1_RSSI_COMB GENMASK(15, 8) +#define HAL_RX_RSSI_LEGACY_INFO_INFO2_RSSI_COMB GENMASK(15, 8) #define HAL_RX_RSSI_LEGACY_INFO_INFO2_RSSI_COMB_PPDU GENMASK(7, 0) struct hal_rx_phyrx_rssi_legacy_info { From 1a77e0915981e8c19246e1182acf79dc2b98e57e Mon Sep 17 00:00:00 2001 From: Adrian Nicolau Date: Mon, 2 Mar 2026 21:51:44 +0200 Subject: [PATCH 5/5] fix stack garbage --- drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c | 2 +- drivers/net/wireless/ath/ath12k/wifi7/hal_rx.h | 6 ++---- drivers/net/wireless/ath/ath12k/wmi.c | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c b/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c index 30c3d820b1555..bd741532b7dc8 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c +++ b/drivers/net/wireless/ath/ath12k/wifi7/dp_mon.c @@ -1704,7 +1704,7 @@ ath12k_wifi7_dp_mon_rx_parse_status_tlv(struct ath12k_pdev_dp *dp_pdev, */ ppdu_info->rssi_comb = u32_get_bits(info[2], - HAL_RX_RSSI_LEGACY_INFO_INFO2_RSSI_COMB); + HAL_RX_RSSI_LEGACY_INFO_INFO2_RSSI_COMB_PPDU); ppdu_info->bw = u32_get_bits(info[0], HAL_RX_RSSI_LEGACY_INFO_INFO0_RX_BW); diff --git a/drivers/net/wireless/ath/ath12k/wifi7/hal_rx.h b/drivers/net/wireless/ath/ath12k/wifi7/hal_rx.h index d9b7afead9148..ac2a8ac03288f 100644 --- a/drivers/net/wireless/ath/ath12k/wifi7/hal_rx.h +++ b/drivers/net/wireless/ath/ath12k/wifi7/hal_rx.h @@ -267,16 +267,14 @@ enum hal_rx_ul_reception_type { #define HAL_RX_RSSI_LEGACY_INFO_INFO0_RECEPTION GENMASK(3, 0) #define HAL_RX_RSSI_LEGACY_INFO_INFO0_RX_BW GENMASK(7, 5) -#define HAL_RX_RSSI_LEGACY_INFO_INFO2_RSSI_COMB GENMASK(15, 8) +#define HAL_RX_RSSI_LEGACY_INFO_INFO1_RSSI_COMB GENMASK(15, 8) #define HAL_RX_RSSI_LEGACY_INFO_INFO2_RSSI_COMB_PPDU GENMASK(7, 0) struct hal_rx_phyrx_rssi_legacy_info { __le32 info0; - __le32 rsvd0[4]; + __le32 rsvd0[39]; __le32 info1; - __le32 rsvd1[34]; __le32 info2; - __le32 rsvd2; } __packed; #define HAL_RX_MPDU_START_INFO0_PPDU_ID GENMASK(31, 16) diff --git a/drivers/net/wireless/ath/ath12k/wmi.c b/drivers/net/wireless/ath/ath12k/wmi.c index 7617fc3a2479c..9cc3c57a836b3 100644 --- a/drivers/net/wireless/ath/ath12k/wmi.c +++ b/drivers/net/wireless/ath/ath12k/wmi.c @@ -9794,7 +9794,7 @@ static void ath12k_wmi_rssi_dbm_conversion_params_info_event(struct ath12k_base *ab, struct sk_buff *skb) { - struct ath12k_wmi_rssi_dbm_conv_info_arg rssi_info; + struct ath12k_wmi_rssi_dbm_conv_info_arg rssi_info = {}; struct ath12k *ar; s32 noise_floor; u32 pdev_id;