linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] wifi: rtw88: Fix the RX aggregation in USB 3 mode
@ 2024-10-08 18:44 Bitterblue Smith
  2024-10-09  0:18 ` Ping-Ke Shih
  2024-10-17 14:24 ` Kalle Valo
  0 siblings, 2 replies; 7+ messages in thread
From: Bitterblue Smith @ 2024-10-08 18:44 UTC (permalink / raw)
  To: linux-wireless@vger.kernel.org; +Cc: Ping-Ke Shih, Kalle Valo

RTL8822CU, RTL8822BU, and RTL8821CU don't need BIT_EN_PRE_CALC.
In fact, RTL8822BU in USB 3 mode doesn't pass all the frames to the
driver, resulting in much lower download speed than normal:

$ iperf3 -c 192.168.0.1 -R
Connecting to host 192.168.0.1, port 5201
Reverse mode, remote host 192.168.0.1 is sending
[  5] local 192.168.0.50 port 43062 connected to 192.168.0.1 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  26.9 MBytes   225 Mbits/sec                  
[  5]   1.00-2.00   sec  7.50 MBytes  62.9 Mbits/sec                  
[  5]   2.00-3.00   sec  8.50 MBytes  71.3 Mbits/sec                  
[  5]   3.00-4.00   sec  8.38 MBytes  70.3 Mbits/sec                  
[  5]   4.00-5.00   sec  7.75 MBytes  65.0 Mbits/sec                  
[  5]   5.00-6.00   sec  8.00 MBytes  67.1 Mbits/sec                  
[  5]   6.00-7.00   sec  8.00 MBytes  67.1 Mbits/sec                  
[  5]   7.00-8.00   sec  7.75 MBytes  65.0 Mbits/sec                  
[  5]   8.00-9.00   sec  7.88 MBytes  66.1 Mbits/sec                  
[  5]   9.00-10.00  sec  7.88 MBytes  66.1 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.02  sec   102 MBytes  85.1 Mbits/sec  224             sender
[  5]   0.00-10.00  sec  98.6 MBytes  82.7 Mbits/sec                  receiver

Don't set BIT_EN_PRE_CALC. Then the speed is much better:

% iperf3 -c 192.168.0.1 -R    
Connecting to host 192.168.0.1, port 5201
Reverse mode, remote host 192.168.0.1 is sending
[  5] local 192.168.0.50 port 39000 connected to 192.168.0.1 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  52.8 MBytes   442 Mbits/sec                  
[  5]   1.00-2.00   sec  71.9 MBytes   603 Mbits/sec                  
[  5]   2.00-3.00   sec  74.8 MBytes   627 Mbits/sec                  
[  5]   3.00-4.00   sec  75.9 MBytes   636 Mbits/sec                  
[  5]   4.00-5.00   sec  76.0 MBytes   638 Mbits/sec                  
[  5]   5.00-6.00   sec  74.1 MBytes   622 Mbits/sec                  
[  5]   6.00-7.00   sec  74.0 MBytes   621 Mbits/sec                  
[  5]   7.00-8.00   sec  76.0 MBytes   638 Mbits/sec                  
[  5]   8.00-9.00   sec  74.4 MBytes   624 Mbits/sec                  
[  5]   9.00-10.00  sec  63.9 MBytes   536 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   717 MBytes   601 Mbits/sec   24             sender
[  5]   0.00-10.00  sec   714 MBytes   599 Mbits/sec                  receiver

Fixes: 002a5db9a52a ("wifi: rtw88: Enable USB RX aggregation for 8822c/8822b/8821c")
Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
---
The code in the official drivers is a little broken. It sets
BIT_EN_PRE_CALC and then immediately unsets it. I didn't notice that
before.

Maybe this should go to kernel 6.12, if it's not too late. Commit 002a5db9a52a
("wifi: rtw88: Enable USB RX aggregation for 8822c/8822b/8821c") first appears
in 6.12.
---
 drivers/net/wireless/realtek/rtw88/usb.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtw88/usb.c b/drivers/net/wireless/realtek/rtw88/usb.c
index 10b840d59ebd..74ee5bdbb036 100644
--- a/drivers/net/wireless/realtek/rtw88/usb.c
+++ b/drivers/net/wireless/realtek/rtw88/usb.c
@@ -772,7 +772,6 @@ static void rtw_usb_dynamic_rx_agg_v1(struct rtw_dev *rtwdev, bool enable)
 	u8 size, timeout;
 	u16 val16;
 
-	rtw_write32_set(rtwdev, REG_RXDMA_AGG_PG_TH, BIT_EN_PRE_CALC);
 	rtw_write8_set(rtwdev, REG_TXDMA_PQ_MAP, BIT_RXDMA_AGG_EN);
 	rtw_write8_clr(rtwdev, REG_RXDMA_AGG_PG_TH + 3, BIT(7));
 
-- 
2.46.0

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

end of thread, other threads:[~2024-10-17 14:24 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-08 18:44 [PATCH] wifi: rtw88: Fix the RX aggregation in USB 3 mode Bitterblue Smith
2024-10-09  0:18 ` Ping-Ke Shih
2024-10-09 16:11   ` Bitterblue Smith
2024-10-11 11:56   ` Kalle Valo
2024-10-11 12:48     ` Ping-Ke Shih
2024-10-11 13:44       ` Kalle Valo
2024-10-17 14:24 ` Kalle Valo

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).