From: Ping-Ke Shih <pkshih@realtek.com>
To: Bitterblue Smith <rtl8821cerfe2@gmail.com>,
"linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>
Subject: RE: [PATCH 2/2] wifi: rtw88: usb: Enable RX aggregation for 8821au/8812au
Date: Fri, 8 Nov 2024 02:40:56 +0000 [thread overview]
Message-ID: <dbba24025d024b31948dc23cd0c2f772@realtek.com> (raw)
In-Reply-To: <c7f9a5c0-a90f-4ebe-b7a0-401d300bfa13@gmail.com>
Bitterblue Smith <rtl8821cerfe2@gmail.com> wrote:
>>
> USB RX aggregation improves the RX speed on certain ARM systems, like
> the NanoPi NEO Core2. With RTL8811AU, before: 30 Mbps, after: 224 Mbps.
>
> The out-of-tree driver uses aggregation size of 7 in USB 3 mode, but
> that doesn't work here. rtw88 advertises support for receiving AMSDU
> in AMPDU, so the AP sends larger frames, up to ~5100 bytes. With a size
> of 7 RTL8812AU frequently tries to aggregate more frames than will fit
> in 32768 bytes. Use a size of 6 instead.
>
> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
> ---
> drivers/net/wireless/realtek/rtw88/usb.c | 30 ++++++++++++++++++++++++
> 1 file changed, 30 insertions(+)
>
> diff --git a/drivers/net/wireless/realtek/rtw88/usb.c b/drivers/net/wireless/realtek/rtw88/usb.c
> index 752bca05b9af..9172af63500b 100644
> --- a/drivers/net/wireless/realtek/rtw88/usb.c
> +++ b/drivers/net/wireless/realtek/rtw88/usb.c
> @@ -790,6 +790,32 @@ static void rtw_usb_dynamic_rx_agg_v1(struct rtw_dev *rtwdev, bool enable)
> rtw_write16(rtwdev, REG_RXDMA_AGG_PG_TH, val16);
> }
>
> +static void rtw_usb_dynamic_rx_agg_v2(struct rtw_dev *rtwdev, bool enable)
> +{
> + struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev);
> + u8 size, timeout;
> + u16 val16;
> +
How about a shortcut?
if (!enable) {
size = 0x0;
timeout = 0x1;
goto rx_agg;
}
> + if (rtwusb->udev->speed == USB_SPEED_SUPER) {
> + size = 0x6;
> + timeout = 0x1a;
> + } else {
> + size = 0x5;
> + timeout = 0x20;
> + }
> +
> + if (!enable) {
> + size = 0x0;
> + timeout = 0x1;
> + }
> +
rx_agg:
> + val16 = u16_encode_bits(size, BIT_RXDMA_AGG_PG_TH) |
> + u16_encode_bits(timeout, BIT_DMA_AGG_TO_V1);
> +
> + rtw_write16(rtwdev, REG_RXDMA_AGG_PG_TH, val16);
> + rtw_write8_set(rtwdev, REG_TXDMA_PQ_MAP, BIT_RXDMA_AGG_EN);
> +}
> +
> static void rtw_usb_dynamic_rx_agg(struct rtw_dev *rtwdev, bool enable)
> {
> switch (rtwdev->chip->id) {
> @@ -798,6 +824,10 @@ static void rtw_usb_dynamic_rx_agg(struct rtw_dev *rtwdev, bool enable)
> case RTW_CHIP_TYPE_8821C:
> rtw_usb_dynamic_rx_agg_v1(rtwdev, enable);
> break;
> + case RTW_CHIP_TYPE_8821A:
> + case RTW_CHIP_TYPE_8812A:
> + rtw_usb_dynamic_rx_agg_v2(rtwdev, enable);
> + break;
> case RTW_CHIP_TYPE_8723D:
> /* Doesn't like aggregation. */
> break;
> --
> 2.47.0
next prev parent reply other threads:[~2024-11-08 2:41 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-07 23:41 [PATCH 1/2] wifi: rtw88: usb: Support USB 3 with RTL8812AU Bitterblue Smith
2024-11-07 23:43 ` [PATCH 2/2] wifi: rtw88: usb: Enable RX aggregation for 8821au/8812au Bitterblue Smith
2024-11-08 2:40 ` Ping-Ke Shih [this message]
2024-11-13 23:50 ` Bitterblue Smith
2024-11-14 0:21 ` Ping-Ke Shih
2024-11-08 2:36 ` [PATCH 1/2] wifi: rtw88: usb: Support USB 3 with RTL8812AU Ping-Ke Shih
2024-11-13 23:48 ` Bitterblue Smith
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=dbba24025d024b31948dc23cd0c2f772@realtek.com \
--to=pkshih@realtek.com \
--cc=linux-wireless@vger.kernel.org \
--cc=rtl8821cerfe2@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).