All of lore.kernel.org
 help / color / mirror / Atom feed
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


  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.