Linux wireless drivers development
 help / color / mirror / Atom feed
* [PATCH rtw-next] wifi: rtw89: usb: shorten the RX aggregation hold on RTL8922AU
@ 2026-10-06 19:06 Devin Wittmayer
  2026-10-07  2:31 ` Ping-Ke Shih
  0 siblings, 1 reply; 2+ messages in thread
From: Devin Wittmayer @ 2026-10-06 19:06 UTC (permalink / raw)
  To: Ping-Ke Shih; +Cc: linux-wireless, Bitterblue Smith, Nick Morrow, stable

The RTL8922AU holds received frames for up to a millisecond before
handing them to the host, a value carried over from the RTL8852CU.
That adds up to a millisecond of round trip, and under load at 160 MHz
the access point drops to lower rates and download suffers.

Shorten the hold on this chip. Upload is unchanged, and so is download
on a USB 2 port, where the bus is the limit. The cost is some extra CPU
at the same load.

RTL8922AU on USB 3 at 160 MHz, power save off for the round trip:

                         x86, 6 GHz    x86, 5 GHz    Pi 5, 6 GHz
                        before after  before after  before after
  TCP down, 1 flow        613  1002     579   948     586   999  Mbps
  TCP down, 8 flows       656  1187     629  1080     605  1108  Mbps
  round trip             2.33  1.29    2.25  1.18    1.44  0.88  ms
  busiest core, UDP 200M  8.4  12.8     8.3  12.9     2.3   2.8  %

Fixes: 32cee8a9bb66 ("wifi: rtw89: usb: Enable RX aggregation for RTL8922AU")
Reported-by: Nick Morrow <morrownr@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Devin Wittmayer <lucid_duck@justthetip.ca>
---
Ping-Ke, Bitterblue pointed me to you, since the 32 came from Realtek.
Realtek's 8852CU driver uses it as the default and also has a
small-packet mode that sets the hold to 1, the value this patch uses.
If the longer default is there for a reason these tests would miss,
please let me know, thank you.

 drivers/net/wireless/realtek/rtw89/usb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtw89/usb.c b/drivers/net/wireless/realtek/rtw89/usb.c
index dbad42c17761..3dc4c97bba50 100644
--- a/drivers/net/wireless/realtek/rtw89/usb.c
+++ b/drivers/net/wireless/realtek/rtw89/usb.c
@@ -821,7 +821,7 @@ static void rtw89_usb_rx_agg_cfg_v3(struct rtw89_dev *rtwdev)
 {
 	const u32 rxagg_0 = FIELD_PREP_CONST(B_BE_RXAGG_0_EN, 1) |
 			    FIELD_PREP_CONST(B_BE_RXAGG_0_NUM_TH, 255) |
-			    FIELD_PREP_CONST(B_BE_RXAGG_0_TIME_32US_TH, 32) |
+			    FIELD_PREP_CONST(B_BE_RXAGG_0_TIME_32US_TH, 1) |
 			    FIELD_PREP_CONST(B_BE_RXAGG_0_BUF_SZ_1K, 20);
 
 	rtw89_write32(rtwdev, R_BE_RXAGG_0_V1, rxagg_0);
-- 
2.55.0


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

* RE: [PATCH rtw-next] wifi: rtw89: usb: shorten the RX aggregation hold on RTL8922AU
  2026-10-06 19:06 [PATCH rtw-next] wifi: rtw89: usb: shorten the RX aggregation hold on RTL8922AU Devin Wittmayer
@ 2026-10-07  2:31 ` Ping-Ke Shih
  0 siblings, 0 replies; 2+ messages in thread
From: Ping-Ke Shih @ 2026-10-07  2:31 UTC (permalink / raw)
  To: Devin Wittmayer
  Cc: linux-wireless@vger.kernel.org, Bitterblue Smith, Nick Morrow,
	stable@vger.kernel.org

Devin Wittmayer <lucid_duck@justthetip.ca> wrote:
> The RTL8922AU holds received frames for up to a millisecond before
> handing them to the host, a value carried over from the RTL8852CU.
> That adds up to a millisecond of round trip, and under load at 160 MHz
> the access point drops to lower rates and download suffers.
> 
> Shorten the hold on this chip. Upload is unchanged, and so is download
> on a USB 2 port, where the bus is the limit. 

Can I know the number of USB 2 port? Just curious, not blocking item.

> The cost is some extra CPU at the same load.

I think the major reason people want RX aggregation is that a chip is
operating on a low-end CPU. 

> 
> RTL8922AU on USB 3 at 160 MHz, power save off for the round trip:
> 
>                          x86, 6 GHz    x86, 5 GHz    Pi 5, 6 GHz
>                         before after  before after  before after
>   TCP down, 1 flow        613  1002     579   948     586   999  Mbps
>   TCP down, 8 flows       656  1187     629  1080     605  1108  Mbps
>   round trip             2.33  1.29    2.25  1.18    1.44  0.88  ms
>   busiest core, UDP 200M  8.4  12.8     8.3  12.9     2.3   2.8  %
> 
> Fixes: 32cee8a9bb66 ("wifi: rtw89: usb: Enable RX aggregation for RTL8922AU")
> Reported-by: Nick Morrow <morrownr@gmail.com>
> Cc: stable@vger.kernel.org
> Signed-off-by: Devin Wittmayer <lucid_duck@justthetip.ca>

Acked-by: Ping-Ke Shih <pkshih@realtek.com>

> ---
> Ping-Ke, Bitterblue pointed me to you, since the 32 came from Realtek.
> Realtek's 8852CU driver uses it as the default and also has a
> small-packet mode that sets the hold to 1, the value this patch uses.
> If the longer default is there for a reason these tests would miss,
> please let me know, thank you.

I can't find small-packet mode you mentioned, please share a link. 

As I know the reason of longer default can benefit low-end CPU. 
By the way, the TX aggregation is pending, because our experiments
show no gain after the patch, so I don't send the patch. That means
current platform is much better than what years ago.

Ping-Ke


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

end of thread, other threads:[~2026-10-07  2:31 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-06 19:06 [PATCH rtw-next] wifi: rtw89: usb: shorten the RX aggregation hold on RTL8922AU Devin Wittmayer
2026-10-07  2:31 ` 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