Am 19.04.23 um 22:35 schrieb Bitterblue Smith:
On 19/04/2023 13:01, Martin Kaistra wrote:
This series intends to bring AP mode support to the rtl8xxxu driver,
more specifically for the 8188f, because this is the HW I have.
The work is based on the vendor driver as I do not have access to
datasheets.
Also while doing some measurements with iperf3 to compare with the
vendor driver, I saw, that TCP traffic from AP to STA is slower than in
the vendor driver. For UDP it looks fine. I hope I can get some help to
fix this.
* vendor driver:
without 802.11n:
UDP (AP -> STA): 27 Mbits/sec
UDP (STA -> AP): 33 Mbits/sec
TCP (AP -> STA): 24 Mbits/sec
TCP (STA -> AP): 26 Mbits/sec
with 802.11n:
UDP (AP -> STA): 51 Mbits/sec
UDP (STA -> AP): 35 Mbits/sec
TCP (AP -> STA): 40 Mbits/sec
TCP (STA -> AP): 36 Mbits/sec
* rtl8xxxu:
without 802.11n:
UDP (AP -> STA): 25 Mbits/sec
UDP (STA -> AP): 31 Mbits/sec
TCP (AP -> STA): 3 Mbits/sec !
TCP (STA -> AP): 25 Mbits/sec
with 802.11n:
UDP (AP -> STA): 41 Mbits/sec
UDP (STA -> AP): 36 Mbits/sec
TCP (AP -> STA): 3 Mbits/sec !
TCP (STA -> AP): 32 Mbits/sec
Thanks,
Martin
v2 changelog:
- dropped RFC prefix
- rebase patches to newest wireless-next
- add some R-bs
- new patch: "Add parameter force to rtl8xxxu_refresh_rate_mask"
- new patch: "Remove usage of ieee80211_get_tx_rate()"
- new patch: "Remove usage of tx_info->control.rates[0].flags"
- new patch: "Set maximum number of supported stations"
- add macro for broadcast/multicast frames macid
- add more explanation about beacon queue in commit message of patch 2
- add macros for bit definitions for beacon functions
- implement enable_beacon = false case
- fix beacon valid loop so that error condition is actually reached
- add more explanation about setting mac address register in add_interface
in commit message of patch 6
- rename role macros for connect report h2c
- use bitmap for assigning macids
- add helper function for looking up assigned macids
- move patch 7 so we can use rtl8xxxu_get_macid helper
- add sta_remove callback
- do things in sta_add only in AP mode
- use IEEE80211_TX_CTL_ASSIGN_SEQ flag to determine when to use HW sequence
numbers
- add priv->vif null pointer check in configure_filter, rework setting
BSSID_BEACON/BSSID_MATCH in RCR
v1: https://lore.kernel.org/linux-wireless/20230322171905.492855-1-martin.kaistra@xxxxxxxxxxxxx/
The system didn't freeze with v2!
Also the download speed I got on the phone at speedtest.net
was around 35 megabits/second, which is normal. Did you test
v2 with iperf3?
Yes, I can still see a difference between rtl8xxxu and the vendor driver for TCP:
vendor driver (8188fu):
» iperf3 -B 192.168.0.11 -c 192.168.0.35
Connecting to host 192.168.0.35, port 5201
[ 5] local 192.168.0.11 port 52125 connected to 192.168.0.35 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 5.01 MBytes 42.0 Mbits/sec 0 174 KBytes
[ 5] 1.00-2.00 sec 5.78 MBytes 48.5 Mbits/sec 0 185 KBytes
[ 5] 2.00-3.00 sec 5.53 MBytes 46.4 Mbits/sec 0 197 KBytes
[ 5] 3.00-4.00 sec 5.65 MBytes 47.4 Mbits/sec 0 208 KBytes
[ 5] 4.00-5.00 sec 6.09 MBytes 51.1 Mbits/sec 0 219 KBytes
[ 5] 5.00-6.00 sec 5.53 MBytes 46.4 Mbits/sec 0 219 KBytes
[ 5] 6.00-7.00 sec 5.84 MBytes 49.0 Mbits/sec 0 219 KBytes
[ 5] 7.00-8.00 sec 5.72 MBytes 48.0 Mbits/sec 0 291 KBytes
[ 5] 8.00-9.00 sec 6.15 MBytes 51.6 Mbits/sec 0 291 KBytes
[ 5] 9.00-10.00 sec 5.59 MBytes 46.9 Mbits/sec 0 291 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 56.9 MBytes 47.7 Mbits/sec 0 sender
[ 5] 0.00-10.06 sec 55.6 MBytes 46.3 Mbits/sec receiver
iperf Done.
» iperf3 -u -B 192.168.0.11 -c 192.168.0.35 --bitrate 60M
Connecting to host 192.168.0.35, port 5201
[ 5] local 192.168.0.11 port 38501 connected to 192.168.0.35 port 5201
[ ID] Interval Transfer Bitrate Total Datagrams
[ 5] 0.00-1.00 sec 6.05 MBytes 50.7 Mbits/sec 4380
[ 5] 1.00-2.00 sec 6.09 MBytes 51.0 Mbits/sec 4407
[ 5] 2.00-3.00 sec 6.09 MBytes 51.1 Mbits/sec 4407
[ 5] 3.00-4.00 sec 5.94 MBytes 49.8 Mbits/sec 4303
[ 5] 4.00-5.00 sec 5.96 MBytes 50.0 Mbits/sec 4316
[ 5] 5.00-6.00 sec 6.23 MBytes 52.3 Mbits/sec 4511
[ 5] 6.00-7.00 sec 6.25 MBytes 52.4 Mbits/sec 4524
[ 5] 7.00-8.00 sec 5.87 MBytes 49.2 Mbits/sec 4251
[ 5] 8.00-9.00 sec 6.12 MBytes 51.4 Mbits/sec 4433
[ 5] 9.00-10.00 sec 6.25 MBytes 52.4 Mbits/sec 4524
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-10.00 sec 60.8 MBytes 51.0 Mbits/sec 0.000 ms 0/44056 (0%) sender
[ 5] 0.00-10.07 sec 60.8 MBytes 50.7 Mbits/sec 0.345 ms 0/44052 (0%) receiver
iperf Done.
rtl8xxxu:
» iperf3 -B 192.168.0.11 -c 192.168.0.35
Connecting to host 192.168.0.35, port 5201
[ 5] local 192.168.0.11 port 35887 connected to 192.168.0.35 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 1.77 MBytes 14.8 Mbits/sec 2 1.41 KBytes
[ 5] 1.00-2.00 sec 509 KBytes 4.17 Mbits/sec 0 242 KBytes
[ 5] 2.00-3.00 sec 0.00 Bytes 0.00 bits/sec 0 242 KBytes
[ 5] 3.00-4.00 sec 509 KBytes 4.17 Mbits/sec 1 246 KBytes
[ 5] 4.00-5.00 sec 0.00 Bytes 0.00 bits/sec 0 246 KBytes
[ 5] 5.00-6.00 sec 0.00 Bytes 0.00 bits/sec 0 246 KBytes
[ 5] 6.00-7.00 sec 0.00 Bytes 0.00 bits/sec 0 246 KBytes
[ 5] 7.00-8.00 sec 0.00 Bytes 0.00 bits/sec 0 246 KBytes
[ 5] 8.00-9.00 sec 0.00 Bytes 0.00 bits/sec 0 246 KBytes
[ 5] 9.00-10.00 sec 509 KBytes 4.17 Mbits/sec 0 246 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 3.26 MBytes 2.73 Mbits/sec 3 sender
[ 5] 0.00-10.04 sec 1.98 MBytes 1.65 Mbits/sec receiver
iperf Done.
» iperf3 -u -B 192.168.0.11 -c 192.168.0.35 --bitrate 60M
Connecting to host 192.168.0.35, port 5201
[ 5] local 192.168.0.11 port 39467 connected to 192.168.0.35 port 5201
[ ID] Interval Transfer Bitrate Total Datagrams
[ 5] 0.00-1.00 sec 5.77 MBytes 48.4 Mbits/sec 4178
[ 5] 1.00-2.00 sec 5.62 MBytes 47.1 Mbits/sec 4067
[ 5] 2.00-3.00 sec 5.51 MBytes 46.2 Mbits/sec 3991
[ 5] 3.00-4.00 sec 5.38 MBytes 45.1 Mbits/sec 3895
[ 5] 4.00-5.00 sec 5.51 MBytes 46.2 Mbits/sec 3990
[ 5] 5.00-6.00 sec 5.51 MBytes 46.2 Mbits/sec 3990
[ 5] 6.00-7.00 sec 5.67 MBytes 47.6 Mbits/sec 4108
[ 5] 7.00-8.00 sec 5.68 MBytes 47.6 Mbits/sec 4112
[ 5] 8.00-9.00 sec 5.63 MBytes 47.3 Mbits/sec 4080
[ 5] 9.00-10.00 sec 5.61 MBytes 47.1 Mbits/sec 4064
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-10.00 sec 55.9 MBytes 46.9 Mbits/sec 0.000 ms 0/40475 (0%) sender
[ 5] 0.00-11.94 sec 55.9 MBytes 39.3 Mbits/sec 0.493 ms 0/40466 (0%) receiver
iperf Done.
I saw a few of these in the journal:
usb 1-2: rtl8xxxu_send_beacon_frame: Failed to read beacon valid bit
I'm not sure what caused that.