linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 1/2] wifi: rtw88: 8822c: Fix reported RX band width
@ 2024-07-23 19:31 Bitterblue Smith
  2024-07-23 19:32 ` [PATCH v3 2/2] wifi: rtw88: 8703b: " Bitterblue Smith
  2024-07-31  6:09 ` [PATCH v3 1/2] wifi: rtw88: 8822c: " Ping-Ke Shih
  0 siblings, 2 replies; 4+ messages in thread
From: Bitterblue Smith @ 2024-07-23 19:31 UTC (permalink / raw)
  To: linux-wireless@vger.kernel.org; +Cc: Ping-Ke Shih

"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>
---
v3:
 - Use Fixes and Cc: stable.

v2:
 - Use Fixes instead of Cc: stable.
---
 drivers/net/wireless/realtek/rtw88/rtw8822c.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
index bc807b13e9ce..e265a35184ab 100644
--- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
+++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
@@ -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);
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v3 2/2] wifi: rtw88: 8703b: Fix reported RX band width
  2024-07-23 19:31 [PATCH v3 1/2] wifi: rtw88: 8822c: Fix reported RX band width Bitterblue Smith
@ 2024-07-23 19:32 ` Bitterblue Smith
  2024-07-23 21:32   ` Fiona Klute
  2024-07-31  6:09 ` [PATCH v3 1/2] wifi: rtw88: 8822c: " Ping-Ke Shih
  1 sibling, 1 reply; 4+ messages in thread
From: Bitterblue Smith @ 2024-07-23 19:32 UTC (permalink / raw)
  To: linux-wireless@vger.kernel.org; +Cc: Ping-Ke Shih, Fiona Klute

The definition of GET_RX_DESC_BW is incorrect. Fix it according to the
GET_RX_STATUS_DESC_BW_8703B macro from the official driver.

Tested only with RTL8812AU, which uses the same bits.

Cc: stable@vger.kernel.org
Fixes: 9bb762b3a957 ("wifi: rtw88: Add definitions for 8703b chip")
Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
---
v3:
 - Use Fixes and Cc: stable.

v2:
 - Use Fixes instead of Cc: stable.
---
 drivers/net/wireless/realtek/rtw88/rx.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtw88/rx.h b/drivers/net/wireless/realtek/rtw88/rx.h
index d3668c4efc24..8a072dd3d73c 100644
--- a/drivers/net/wireless/realtek/rtw88/rx.h
+++ b/drivers/net/wireless/realtek/rtw88/rx.h
@@ -41,7 +41,7 @@ enum rtw_rx_desc_enc {
 #define GET_RX_DESC_TSFL(rxdesc)                                               \
 	le32_get_bits(*((__le32 *)(rxdesc) + 0x05), GENMASK(31, 0))
 #define GET_RX_DESC_BW(rxdesc)                                                 \
-	(le32_get_bits(*((__le32 *)(rxdesc) + 0x04), GENMASK(31, 24)))
+	(le32_get_bits(*((__le32 *)(rxdesc) + 0x04), GENMASK(5, 4)))
 
 void rtw_rx_stats(struct rtw_dev *rtwdev, struct ieee80211_vif *vif,
 		  struct sk_buff *skb);
-- 
2.45.2



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v3 2/2] wifi: rtw88: 8703b: Fix reported RX band width
  2024-07-23 19:32 ` [PATCH v3 2/2] wifi: rtw88: 8703b: " Bitterblue Smith
@ 2024-07-23 21:32   ` Fiona Klute
  0 siblings, 0 replies; 4+ messages in thread
From: Fiona Klute @ 2024-07-23 21:32 UTC (permalink / raw)
  To: Bitterblue Smith, linux-wireless@vger.kernel.org; +Cc: Ping-Ke Shih

Am 23.07.24 um 21:32 schrieb Bitterblue Smith:
> The definition of GET_RX_DESC_BW is incorrect. Fix it according to the
> GET_RX_STATUS_DESC_BW_8703B macro from the official driver.
>
> Tested only with RTL8812AU, which uses the same bits.

Thanks for catching this! Confirmed that RTL8723CS correctly reports
20MHz, my radio environment is too noisy to connect with HT40.

Tested-by: Fiona Klute <fiona.klute@gmx.de>

> Cc: stable@vger.kernel.org
> Fixes: 9bb762b3a957 ("wifi: rtw88: Add definitions for 8703b chip")
> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
> ---
> v3:
>   - Use Fixes and Cc: stable.
>
> v2:
>   - Use Fixes instead of Cc: stable.
> ---
>   drivers/net/wireless/realtek/rtw88/rx.h | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/realtek/rtw88/rx.h b/drivers/net/wireless/realtek/rtw88/rx.h
> index d3668c4efc24..8a072dd3d73c 100644
> --- a/drivers/net/wireless/realtek/rtw88/rx.h
> +++ b/drivers/net/wireless/realtek/rtw88/rx.h
> @@ -41,7 +41,7 @@ enum rtw_rx_desc_enc {
>   #define GET_RX_DESC_TSFL(rxdesc)                                               \
>   	le32_get_bits(*((__le32 *)(rxdesc) + 0x05), GENMASK(31, 0))
>   #define GET_RX_DESC_BW(rxdesc)                                                 \
> -	(le32_get_bits(*((__le32 *)(rxdesc) + 0x04), GENMASK(31, 24)))
> +	(le32_get_bits(*((__le32 *)(rxdesc) + 0x04), GENMASK(5, 4)))
>
>   void rtw_rx_stats(struct rtw_dev *rtwdev, struct ieee80211_vif *vif,
>   		  struct sk_buff *skb);

--
Dipl.-Ing. Fiona Klute
Mollwitzer Str. 2
44141 Dortmund
Germany

USt.-ID/VAT number: DE363488944


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v3 1/2] wifi: rtw88: 8822c: Fix reported RX band width
  2024-07-23 19:31 [PATCH v3 1/2] wifi: rtw88: 8822c: Fix reported RX band width Bitterblue Smith
  2024-07-23 19:32 ` [PATCH v3 2/2] wifi: rtw88: 8703b: " Bitterblue Smith
@ 2024-07-31  6:09 ` Ping-Ke Shih
  1 sibling, 0 replies; 4+ messages in thread
From: Ping-Ke Shih @ 2024-07-31  6:09 UTC (permalink / raw)
  To: Bitterblue Smith, linux-wireless@vger.kernel.org; +Cc: Ping-Ke Shih

Bitterblue Smith <rtl8821cerfe2@gmail.com> wrote:

> "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>

2 patch(es) applied to rtw-next branch of rtw.git, thanks.

a71ed5898dfa wifi: rtw88: 8822c: Fix reported RX band width
0129e5ff2842 wifi: rtw88: 8703b: Fix reported RX band width

---
https://github.com/pkshih/rtw.git


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-07-31  6:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-23 19:31 [PATCH v3 1/2] wifi: rtw88: 8822c: Fix reported RX band width Bitterblue Smith
2024-07-23 19:32 ` [PATCH v3 2/2] wifi: rtw88: 8703b: " Bitterblue Smith
2024-07-23 21:32   ` Fiona Klute
2024-07-31  6:09 ` [PATCH v3 1/2] wifi: rtw88: 8822c: " Ping-Ke Shih

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).