]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
wifi: rtw88: 8822c: Fix reported RX band width
authorBitterblue Smith <rtl8821cerfe2@gmail.com>
Tue, 23 Jul 2024 19:31:36 +0000 (22:31 +0300)
committerPing-Ke Shih <pkshih@realtek.com>
Wed, 31 Jul 2024 06:05:54 +0000 (14:05 +0800)
"iw dev wlp2s0 station dump" shows incorrect rx bitrate:

tx bitrate:     866.7 MBit/s VHT-MCS 9 80MHz short GI VHT-NSS 2
rx bitrate:     86.7 MBit/s VHT-MCS 9 VHT-NSS 1

This is because the RX band width is calculated incorrectly. Fix the
calculation according to the phydm_rxsc_2_bw() function from the
official drivers.

After:

tx bitrate:     866.7 MBit/s VHT-MCS 9 80MHz short GI VHT-NSS 2
rx bitrate:     390.0 MBit/s VHT-MCS 9 80MHz VHT-NSS 1

It also works correctly with the AP configured for 20 MHz and 40 MHz.

Tested with RTL8822CE.

Cc: stable@vger.kernel.org
Fixes: e3037485c68e ("rtw88: new Realtek 802.11ac driver")
Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/bca8949b-e2bd-4515-98fd-70d3049a0097@gmail.com
drivers/net/wireless/realtek/rtw88/rtw8822c.c

index bc807b13e9ce17a5e6590479369c7724db6e7b0e..e265a35184abeefb10676592c3495828f99ecfe5 100644 (file)
@@ -2612,12 +2612,14 @@ static void query_phy_status_page1(struct rtw_dev *rtwdev, u8 *phy_status,
        else
                rxsc = GET_PHY_STAT_P1_HT_RXSC(phy_status);
 
-       if (rxsc >= 9 && rxsc <= 12)
+       if (rxsc == 0)
+               bw = rtwdev->hal.current_band_width;
+       else if (rxsc >= 1 && rxsc <= 8)
+               bw = RTW_CHANNEL_WIDTH_20;
+       else if (rxsc >= 9 && rxsc <= 12)
                bw = RTW_CHANNEL_WIDTH_40;
-       else if (rxsc >= 13)
-               bw = RTW_CHANNEL_WIDTH_80;
        else
-               bw = RTW_CHANNEL_WIDTH_20;
+               bw = RTW_CHANNEL_WIDTH_80;
 
        channel = GET_PHY_STAT_P1_CHANNEL(phy_status);
        rtw_set_rx_freq_band(pkt_stat, channel);