summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBitterblue Smith <rtl8821cerfe2@gmail.com>2025-11-20 16:13:17 +0200
committerPing-Ke Shih <pkshih@realtek.com>2025-11-21 13:33:29 +0800
commit41a21d0ff3a0b05de78f9cbeb29945d0eb18102a (patch)
tree148a9191df0b6aa3525dabb2800b400109682773
parentfc44314a377ace14c76b7502cf0d785eb35e5cc4 (diff)
wifi: rtl8xxxu: Fix RX channel width reported by RTL8192FU
The other chips report the RX channel width in the RX descriptor, but this one doesn't. Get the RX channel width from the PHY status. Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com> Reviewed-by: Ping-Ke Shih <pkshih@realtek.com> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Link: https://patch.msgid.link/1c6c1fd4-92f6-4327-a24e-f0747ab21819@gmail.com
-rw-r--r--drivers/net/wireless/realtek/rtl8xxxu/core.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/net/wireless/realtek/rtl8xxxu/core.c b/drivers/net/wireless/realtek/rtl8xxxu/core.c
index 739456640ca8..a18f73aea837 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/core.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/core.c
@@ -5701,7 +5701,7 @@ static void jaguar2_rx_parse_phystats_type1(struct rtl8xxxu_priv *priv,
!rtl8xxxu_is_sta_sta(priv) &&
(rtl8xxxu_is_packet_match_bssid(priv, hdr, 0) ||
rtl8xxxu_is_packet_match_bssid(priv, hdr, 1));
- u8 pwdb_max = 0;
+ u8 pwdb_max = 0, rxsc;
int rx_path;
if (parse_cfo) {
@@ -5716,6 +5716,16 @@ static void jaguar2_rx_parse_phystats_type1(struct rtl8xxxu_priv *priv,
pwdb_max = max(pwdb_max, phy_stats1->pwdb[rx_path]);
rx_status->signal = pwdb_max - 110;
+
+ if (rxmcs >= DESC_RATE_6M && rxmcs <= DESC_RATE_54M)
+ rxsc = phy_stats1->l_rxsc;
+ else
+ rxsc = phy_stats1->ht_rxsc;
+
+ if (phy_stats1->rf_mode == 0 || rxsc == 1 || rxsc == 2)
+ rx_status->bw = RATE_INFO_BW_20;
+ else
+ rx_status->bw = RATE_INFO_BW_40;
}
static void jaguar2_rx_parse_phystats_type2(struct rtl8xxxu_priv *priv,