Re: [PATCH v3 00/11] RTW88: Add support for USB variants

From: Sascha Hauer
Date: Thu Nov 24 2022 - 04:20:40 EST


On Thu, Nov 24, 2022 at 09:21:58AM +0100, Sascha Hauer wrote:
> On Thu, Nov 24, 2022 at 06:48:23AM +0000, Ping-Ke Shih wrote:
> >
> > > -----Original Message-----
> > > From: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>
> > > Sent: Tuesday, November 22, 2022 10:55 PM
> > > To: Bernie Huang <phhuang@xxxxxxxxxxx>
> > > Cc: linux-wireless@xxxxxxxxxxxxxxx; Ping-Ke Shih <pkshih@xxxxxxxxxxx>; Hans Ulli Kroll
> > > <linux@xxxxxxxxxxxxx>; Martin Blumenstingl <martin.blumenstingl@xxxxxxxxxxxxxx>; netdev@xxxxxxxxxxxxxxx;
> > > Kalle Valo <kvalo@xxxxxxxxxx>; Yan-Hsuan Chuang <tony0620emma@xxxxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx;
> > > Viktor Petrenko <g0000ga@xxxxxxxxx>; Neo Jou <neojou@xxxxxxxxx>; Bernie Huang <phhuang@xxxxxxxxxxx>;
> > > kernel@xxxxxxxxxxxxxx; Johannes Berg <johannes@xxxxxxxxxxxxxxxx>; Alexander Hochbaum <alex@xxxxxxxxxx>;
> > > Da Xue <da@libre.computer>
> > > Subject: Re: [PATCH v3 00/11] RTW88: Add support for USB variants
> > >
> > > On Tue, Nov 22, 2022 at 03:52:15PM +0100, Sascha Hauer wrote:
> > > > This is the third round of adding support for the USB variants to the
> > > > RTW88 driver. There are a few changes to the last version which make it
> > > > worth looking at this version.
> > > >
> > > > First of all RTL8723du and RTL8821cu are tested working now. The issue
> > > > here was that the txdesc checksum calculation was wrong. I found the
> > > > correct calculation in various downstream drivers found on github.
> > > >
> > > > The second big issue was that TX packet aggregation was wrong. When
> > > > aggregating packets each packet start has to be aligned to eight bytes.
> > > > The necessary alignment was added to the total URB length before
> > > > checking if there is another packet to aggregate, so the URB length
> > > > included that padding after the last packet, which is wrong. Fixing
> > > > this makes the driver work much more reliably.
> > > >
> > > > I added all people to Cc: who showed interest in this driver and I want
> > > > to welcome you for testing and reviewing.
> > >
> > > There still is a problem with the RTL8822cu chipset I have here. When
> > > using NetworkManager I immediately lose the connection to the AP after
> > > it has been connected:
> > >
> > > [ 376.213846] wlan0: authenticate with 76:83:c2:ce:81:b1
> > > [ 380.085463] wlan0: send auth to 76:83:c2:ce:81:b1 (try 1/3)
> > > [ 380.091446] wlan0: authenticated
> > > [ 380.108864] wlan0: associate with 76:83:c2:ce:81:b1 (try 1/3)
> > > [ 380.136448] wlan0: RX AssocResp from 76:83:c2:ce:81:b1 (capab=0x1411 status=0 aid=2)
> > > [ 380.202955] wlan0: associated
> > > [ 380.268140] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
> > > [ 380.275328] wlan0: Connection to AP 76:83:c2:ce:81:b1 lost
> > >
> > > That doesn't happen when using plain wpa_supplicant. This seems to go
> > > down to cd96e22bc1da ("rtw88: add beacon filter support"). After being
> > > connected I get a BCN_FILTER_CONNECTION_LOSS beacon. Plain
> > > wpa_supplicant seems to go another code patch and doesn't activate
> > > connection quality monitoring.
> > >
> > > The connection to the AP works fluently also with NetworkManager though
> > > when I just ignore the BCN_FILTER_CONNECTION_LOSS beacon.
> > >
> > > Any idea what may be wrong here?
> > >
> >
> > Please reference to below patch to see if it can work to you.
> >
> > https://lore.kernel.org/linux-wireless/20221124064442.28042-1-pkshih@xxxxxxxxxxx/T/#u
>
> Great! That solves this issue \o/

I am also happy to say that this patch is a real performance boost.
Here are some numbers:

RTL8723DU, no patch
===================
tx [ 5] 0.00-10.00 sec 1.08 MBytes 903 Kbits/sec 1 sender
rx [ 5] 0.00-10.26 sec 10.3 MBytes 8.41 Mbits/sec 0 sender

RTL8723DU, with patch
=====================
tx [ 5] 0.00-10.00 sec 34.7 MBytes 29.1 Mbits/sec 9 sender
rx [ 5] 0.00-10.05 sec 34.4 MBytes 28.7 Mbits/sec 5 sender

RTL8821CU, no patch
===================
tx [ 5] 0.00-10.00 sec 6.01 MBytes 5.04 Mbits/sec 0 sender
rx [ 5] 0.00-10.44 sec 53.4 MBytes 42.9 Mbits/sec 0 sender

RTL8821CU, with patch
===================
tx [ 5] 0.00-10.00 sec 57.9 MBytes 48.6 Mbits/sec 0 sender
rx [ 5] 0.00-10.15 sec 66.3 MBytes 54.8 Mbits/sec 419 sender

RTL8822CU, no patch
===================
tx [ 5] 0.00-10.00 sec 11.8 MBytes 9.91 Mbits/sec 1 sender
rx [ 5] 0.00-10.18 sec 105 MBytes 86.3 Mbits/sec 805 sender

RTL8822CU, with patch
===================
tx [ 5] 0.00-10.01 sec 80.0 MBytes 67.1 Mbits/sec 0 sender
rx [ 5] 0.00-10.12 sec 117 MBytes 97.2 Mbits/sec 658 sender

Tested with:

tx: iperf3 -c 192.168.0.57 -i0
rx: iperf3 -c 192.168.0.57 -i0 -R

Especially the RTL8723DU now starts being useful.

Sascha

--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |