This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
en:users:wi-fi-alliance-certification [2021/07/21 14:45] Reto Schneider [Driver] |
en:users:wi-fi-alliance-certification [2021/08/12 14:29] Reto Schneider [rtl8xxxu on RTL8188CUS on GARDENA smart gateway] |
||
---|---|---|---|
Line 9: | Line 9: | ||
===== rtl8xxxu on RTL8188CUS on GARDENA smart gateway ===== | ===== rtl8xxxu on RTL8188CUS on GARDENA smart gateway ===== | ||
+ | RealTek provides a GPLed Linux driver named "8192cu" for its RTL8188CUS hardware. While it has worked [[https://api.cert.wi-fi.org/api/certificate/download/public?variantId=14856 | well enough to pass the Wi-Fi Alliance certification]], the last release [[https://github.com/rettichschnidi/realtek-linux/tree/master/RTL8188C_8192C/USB/v4.0 | is from 2017]], its code does not work well with modern kernels (FullMAC, and notoriously unstable) and does no longer receive any security updates. Luckily, it has been superseded by TWO mainlined kernel drivers: | ||
+ | * rtl8192cu: Based on the RealTek driver, shoehorned into mainline Linux. Suffers from various stability issues and code is close to unreadable. | ||
+ | * rtl8xxxu: Written from scratch, [[en::users::drivers::rtl819x | will replace rtl8192cu]]. It has been shown to to be stable during long-term testing. Code is readable. Not (yet) feature equivalent to the 8192cu or even the rtl8192cu. | ||
+ | |||
+ | Both, rtl8192cu and rtl8xxxu are worse than 8192cu when it comes to features and performance. | ||
+ | |||
+ | Given the code quality and stability, it is the goal of GARDENA to develop the rtl8xxxu driver as far as needed to pass the Wi-Fi Alliance certification. | ||
+ | |||
+ | A big hurdle is [[https://blog.linuxplumbersconf.org/2016/ocw/system/presentations/4089/original/2016-11-02-rtl8xxxu-presentation.pdf | the lack of sources as well as documentation for the firmware]]. Therefore, digging in the (hard to read) sources of the vendor driver is needed. | ||
==== Hardware ==== | ==== Hardware ==== | ||
* End product: ARMv5, Atmel SAM9G25 based GARDENA smart gateway ([[https://github.com/husqvarnagroup/smart-garden-gateway-public|sources]]) | * End product: ARMv5, Atmel SAM9G25 based GARDENA smart gateway ([[https://github.com/husqvarnagroup/smart-garden-gateway-public|sources]]) | ||
Line 19: | Line 28: | ||
Before linux-wireless release 20201118, the provided firmware was version 80.0, which is known to hang on the GARDENA smart gateway as long-term tests have shown (and on other machines too - Google knows). Only a cold reset resolved the problem, which is easy to do for an USB WLAN stick but problematic (human intervention needed) on a embedded device that has no hardware reset capabilities for the USB device. | Before linux-wireless release 20201118, the provided firmware was version 80.0, which is known to hang on the GARDENA smart gateway as long-term tests have shown (and on other machines too - Google knows). Only a cold reset resolved the problem, which is easy to do for an USB WLAN stick but problematic (human intervention needed) on a embedded device that has no hardware reset capabilities for the USB device. | ||
- | ==== Driver ==== | + | ==== Driver development ==== |
+ | === Setup === | ||
+ | == Reto == | ||
+ | * AP: various (mainly Linksys WRT3200ACM with TA 00:60:6e:00:07:7d, BS 24:f5:a2:c0:4e:b1, SSID "customer-wifi") | ||
+ | * STAs: | ||
+ | * Thinkpad T420/Edimax EW-7811UN (08:be:ac:0b:14:c4; amd64) | ||
+ | * GARDENA smart gateways (various MAC addresses; ARMv5) | ||
+ | * Capturing device: Asus PCE-AX58BT (Intel AX200) | ||
+ | * iperf3 host: Workstation with IPv4 address 10.42.0.1 | ||
+ | * Distance: Variable, but generally close (1-3m distance) | ||
+ | * Environment: Residual area; not clean/standardized, but using a (seemingly) non-crowded channel (12) | ||
+ | |||
+ | == Chris == | ||
+ | * AP: ? | ||
+ | * STA: rtl8xxxu running on Edimax EW-7811UN (amd64) | ||
+ | * Distance: ? | ||
+ | * Environment: ? | ||
=== Baseline === | === Baseline === | ||
- | The rtl8xxxu driver performance (throughput) gets compared to the latest vendor driver release, patched to work on recent Linux versions (5.10+): https://github.com/husqvarnagroup/8192cu_rtl8188cus | + | The rtl8xxxu driver performance (throughput) gets compared to the latest vendor driver release (8192cu), which has been patched to work on recent Linux versions (5.10+): https://github.com/husqvarnagroup/8192cu_rtl8188cus |
=== Progress === | === Progress === | ||
+ | | **Priority** | **Task** | **Wi-Fi Alliance Test Case** | **State** | **Optional** | | ||
+ | | 1 | ACK #1: Fix Block ACKs to include (ack) recently sent frames | n/a (but a prerequisite) | WIP | n | | ||
+ | | 2 | ACK #2: Fix regular ACKs to work also with non-MCS2 packets | n/a (but a prerequisite) | WIP | n | | ||
+ | | unknown | Allow setting TX power limit via iw | none, but needed for EMC | implemented, needs to be verified by GARDENA | n | | ||
+ | | unknown | TX Power: power by rate. | none, but maybe required for EMC | not yet implemented | n | | ||
+ | | unknown | A-MSDU (RX support) | 5.2.38 | not yet implemented | n | | ||
+ | | unknown | WMM: Wi-Fi Multimedia | many | not yet implemented | n (but ASD?) | | ||
+ | | unknown | 802.11n: STBC Receive | 5.2.46 | implemented, needs to be verified | n | | ||
+ | | unknown | A-MPDU: #1. Handle ampdu_action properly on TX. Ex.ADDBA, DELBA, BAR | 5.2.47 | implemented, needs to be verified | n | | ||
+ | | unknown | A-MPDU: #2. Make sure BAR to be handled correctly on RX | 5.2.47 | not yet implemented | n | | ||
+ | | unknown | iw station dump: "tx bitrate: (unknown)" (n/a) | n/a | fixed | y | | ||
+ | | unknown | iw output: "Available Antennas: TX 0 RX 0" (n/a) | n/a | fixed | y | | ||
+ | | unknown | Reach MCS5 ~ MCS7 rate under rate control | n/a | not yet implemented | y | | ||
+ | | unknown | Protected Management Frames (For WPA3 support) | unknown | not yet implemented, HW support unknown (RTL8188CUS) | y | | ||
+ | | unknown | CRDA + RegDB support: Static TX power limit, global | unknown | not yet implemented | y | | ||
+ | | unknown | CRDA + RegDB support: Country support (implement regd_notifier()) | unknown | not yet implemented | y | | ||
+ | | none | Greenfield mode | 5.2.41 (no longer existing) | not yet implemented | y | | ||
+ | | unknown | Regulatory domain: Hook the TX power set/get of the cfg80211 to the driver | none | not yet implemented | y | | ||
+ | | none | Firmware upload failure | n/a | not yet fixed | y | | ||
+ | | none | RX IQK failed | n/a | not yet fixed | y | | ||
+ | |||
+ | == ACK #1: Fix Block ACKs to include (ack) recently sent frames == | ||
+ | rtl8xxxu: | ||
+ | During block ACK sessions, the STA does not ACK frames sent by the AP in time, causing the AP to resend them. It is unknown whether the frames have not been properly received by the STA or if the STA is "just" too slow to ACK them in time. | ||
+ | |||
+ | This results in retransmission percentages of 10-50%. While still yielding usable performance (10-40 MBit/s), this percentage is too high for passing the Wi-Fi Alliance certification. | ||
+ | |||
+ | 8192cu: | ||
+ | ACK-ing all sent frames in time, resulting in only 1-2% retransmitted frames and great performance (35+ MBit/s). | ||
+ | |||
+ | == Firmware upload failure == | ||
+ | The following error happens frequently on Reto's machine, but does not happen on the GARDENA smart gateway: | ||
+ | <code> | ||
+ | kernel: usb 1-1.5.4: new high-speed USB device number 8 using ehci-pci | ||
+ | kernel: usb 1-1.5.4: New USB device found, idVendor=7392, idProduct=7811, bcdDevice= 2.00 | ||
+ | kernel: usb 1-1.5.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 | ||
+ | kernel: usb 1-1.5.4: Product: 802.11n WLAN Adapter | ||
+ | kernel: usb 1-1.5.4: Manufacturer: Realtek | ||
+ | kernel: usb 1-1.5.4: SerialNumber: 00e04c000001 | ||
+ | kernel: usb 1-1.5.4: Vendor: Realtek | ||
+ | kernel: usb 1-1.5.4: Product: 802.11n WLAN Adapter | ||
+ | kernel: usb 1-1.5.4: rtl8192cu_parse_efuse: dumping efuse (0x80 bytes): | ||
+ | kernel: usb 1-1.5.4: 00: 29 81 00 74 cd 00 00 00 | ||
+ | kernel: usb 1-1.5.4: 08: ff 00 92 73 11 78 03 41 | ||
+ | kernel: usb 1-1.5.4: 10: 32 00 85 62 9e ad 08 be | ||
+ | kernel: usb 1-1.5.4: 18: ac 0b 14 c4 0a 03 52 65 | ||
+ | kernel: usb 1-1.5.4: 20: 61 6c 74 65 6b 00 16 03 | ||
+ | kernel: usb 1-1.5.4: 28: 38 30 32 2e 31 31 6e 20 | ||
+ | kernel: usb 1-1.5.4: 30: 57 4c 41 4e 20 41 64 61 | ||
+ | kernel: usb 1-1.5.4: 38: 70 74 65 72 00 00 00 00 | ||
+ | kernel: usb 1-1.5.4: 40: 00 00 00 00 00 00 00 00 | ||
+ | kernel: usb 1-1.5.4: 48: 00 00 00 00 00 00 00 00 | ||
+ | kernel: usb 1-1.5.4: 50: 00 00 00 00 00 00 00 00 | ||
+ | kernel: usb 1-1.5.4: 58: 06 00 27 27 27 00 00 00 | ||
+ | kernel: usb 1-1.5.4: 60: 29 29 29 00 00 00 00 00 | ||
+ | kernel: usb 1-1.5.4: 68: 00 00 00 00 11 11 33 00 | ||
+ | kernel: usb 1-1.5.4: 70: 00 00 00 00 00 02 00 00 | ||
+ | kernel: usb 1-1.5.4: 78: 0f 00 00 00 36 00 00 00 | ||
+ | kernel: usb 1-1.5.4: RTL8188CU rev A (TSMC) 1T1R, TX queues 2, WiFi=1, BT=0, GPS=0, HI PA=0 | ||
+ | kernel: usb 1-1.5.4: RTL8188CU MAC: 08:be:ac:0b:14:c4 | ||
+ | kernel: usb 1-1.5.4: rtl8xxxu: Loading firmware rtlwifi/rtl8192cufw_TMSC.bin | ||
+ | kernel: usb 1-1.5.4: Firmware revision 88.2 (signature 0x88c1) | ||
+ | kernel: usb 1-1.5.4: rtl8xxxu_writeN: Failed to write block at addr: 1c00 size: 0080 | ||
+ | kernel: rtl8xxxu: probe of 1-1.5.4:1.0 failed with error -11 | ||
+ | </code> | ||
+ | |||
+ | Unsure if this is a common issue. | ||
+ | |||
+ | == RX IQK failed == | ||
+ | The following error happens frequently on Reto's machine, but does not happen on the GARDENA smart gateway: | ||
+ | <code> | ||
+ | kernel: usb 1-1.5.4: Vendor: Realtek | ||
+ | kernel: usb 1-1.5.4: Product: 802.11n WLAN Adapter | ||
+ | kernel: usb 1-1.5.4: rtl8192cu_parse_efuse: dumping efuse (0x80 bytes): | ||
+ | kernel: usb 1-1.5.4: 00: 29 81 00 74 cd 00 00 00 | ||
+ | kernel: usb 1-1.5.4: 08: ff 00 92 73 11 78 03 41 | ||
+ | kernel: usb 1-1.5.4: 10: 32 00 85 62 9e ad 08 be | ||
+ | kernel: usb 1-1.5.4: 18: ac 0b 14 c4 0a 03 52 65 | ||
+ | kernel: usb 1-1.5.4: 20: 61 6c 74 65 6b 00 16 03 | ||
+ | kernel: usb 1-1.5.4: 28: 38 30 32 2e 31 31 6e 20 | ||
+ | kernel: usb 1-1.5.4: 30: 57 4c 41 4e 20 41 64 61 | ||
+ | kernel: usb 1-1.5.4: 38: 70 74 65 72 00 00 00 00 | ||
+ | kernel: usb 1-1.5.4: 40: 00 00 00 00 00 00 00 00 | ||
+ | kernel: usb 1-1.5.4: 48: 00 00 00 00 00 00 00 00 | ||
+ | kernel: usb 1-1.5.4: 50: 00 00 00 00 00 00 00 00 | ||
+ | kernel: usb 1-1.5.4: 58: 06 00 27 27 27 00 00 00 | ||
+ | kernel: usb 1-1.5.4: 60: 29 29 29 00 00 00 00 00 | ||
+ | kernel: usb 1-1.5.4: 68: 00 00 00 00 11 11 33 00 | ||
+ | kernel: usb 1-1.5.4: 70: 00 00 00 00 00 02 00 00 | ||
+ | kernel: usb 1-1.5.4: 78: 0f 00 00 00 36 00 00 00 | ||
+ | kernel: usb 1-1.5.4: RTL8188CU rev A (TSMC) 1T1R, TX queues 2, WiFi=1, BT=0, GPS=0, HI PA=0 | ||
+ | kernel: usb 1-1.5.4: RTL8188CU MAC: 08:be:ac:0b:14:c4 | ||
+ | kernel: usb 1-1.5.4: rtl8xxxu: Loading firmware rtlwifi/rtl8192cufw_TMSC.bin | ||
+ | kernel: usb 1-1.5.4: Firmware revision 88.2 (signature 0x88c1) | ||
+ | kernel: usb 1-1.5.4: rtl8xxxu_iqk_path_a: Path A RX IQK failed! | ||
+ | kernel: usb 1-1.5.4: rtl8xxxu_iqk_path_a: Path A RX IQK failed! | ||
+ | kernel: usbcore: registered new interface driver rtl8xxxu | ||
+ | </code> | ||
+ | |||
+ | Unsure if this is a common issue. | ||
+ | |||
+ | === Patches === | ||
+ | |||
+ | | **Number** | **Description** | **Link** | **Testing results (Reto)** | **Upstream State** | | ||
+ | | 1 | Handle BSS_CHANGED_TXPOWER/IEEE80211_CONF_CHANGE_POWER | https://github.com/husqvarnagroup/linux/commit/798796ff5070255a7cccc7529c272b629da79d7b | | | | ||
+ | | 2 | Handle for mac80211 get_txpower | https://github.com/husqvarnagroup/linux/commit/5df123ce78422b76603eedf799fc50f5e3303011 | | | | ||
+ | | 3 | Enable RX STBC by default | https://github.com/husqvarnagroup/linux/commit/4efe4bf653a14b61ff9b3969050bc696976415eb | | | | ||
+ | | 4 | Feed antenna information for mac80211 | https://github.com/husqvarnagroup/linux/commit/070d0eca2dbe8086a215c33f6d3ee10cfe9a17cc | | | | ||
+ | | 5 | Fill up txrate info for all chips | https://github.com/husqvarnagroup/linux/commit/fa14d07da5566c8abebccd68473ddc17e908be45 | | | | ||
+ | | 6 | Fix the reported rx signal strength | https://github.com/husqvarnagroup/linux/commit/95f19fff95a62ab67ecc50d75e8c59669f936bd2 | | | | ||
+ | | 7 | Fix the handling of TX A-MPDU aggregation | https://lore.kernel.org/linux-wireless/20210630160151.28227-1-chris.chiu@canonical.com/#t | GARDENA gateway: Improves TX throughtput, but worsens retry percentage; Reverse issue for RX. | WIP | | ||
+ | | 8 | Improve the retransmission rate with HW_RTS enable | https://github.com/husqvarnagroup/linux/commit/31a00cbf0245877e9a98cdec6903758a928482e5 | GARDENA gateway: Neither troughput nor retry percentage improved | | | ||
+ | | 9 | Set RTS rate to 24M for AMPDU | https://github.com/husqvarnagroup/linux/commit/b35338e600b003f830c4533c162a53c57d9d34d2 | GARDENA gateway: no positive effectes observable | | | ||
+ | | 10 | Reduce number of USB interrupts | https://lore.kernel.org/linux-wireless/d32690a6-f679-c676-1461-10b47ae3428b@gmail.com/T/#t | Clearly improves throughput and retries | ACKed by maintainer | | ||
+ | |||
+ | ==== Driver Testing ==== | ||
+ | === Reto === | ||
+ | == Setup == | ||
+ | - Blacklist all drivers (rlt8xxxu, 8192cu, rtl8192cu) | ||
+ | - Ensure no drivers are loaded | ||
+ | - Load driver to be tested (rlt8xxxu, 8192cu, rtl8192cu) with insmod | ||
+ | - Start 802.11 capture | ||
+ | - Start wpa_supplicant on DUT | ||
+ | - Once IP address got assigned, measure the performance using iperf3: | ||
+ | * TCP TX Throughput: <code>iperf3 -c 10.42.0.1</code> | ||
+ | * TCP RX Throughput: <code>iperf3 -c --reverse 10.42.0.1</code> | ||
+ | |||
+ | == Repos == | ||
+ | * Linux: https://github.com/husqvarnagroup/linux | ||
+ | * 8192cu: https://github.com/husqvarnagroup/realtek-8192cu_rtl8188cus | ||
+ | |||
+ | == Analysis == | ||
+ | * The throughput values are the ones reported by iperf3 (the lower value if server/client values differ) | ||
+ | * The retry values are taken from Wireshark in menu "Wireless" -> "WLAN Traffic" | ||
+ | |||
+ | == TCP TX Throughput == | ||
+ | |||
+ | | **DUT** | **AP** | **Driver** | **Throughput [Mbits/sec]; retries [%]** | **AP <-> DUT** | **Notes** | **PCAP** | | ||
+ | | amd64, Edimax | Linksys | Linux v5.10.51, rtl8xxxu (vanilla) | 30.6 Mbits/s; 12% | 2m, two monitors in line of sight | Many "ghost MAC addresses" | https://files.reto-schneider.ch/rtl8xxxu/2021-07-23-Testing/2021-07-23-1-Linux-5.10.51-2021-07-22-vanilla-rtl8xxxu-edimax-08:be:ac:0b:14:c4-iperf-tx-tcp-12%25-retries-at-30.6MBps.pcapng.gz | | ||
+ | | amd64, Edimax | Linksys | Linux v5.10.51, rtl8xxxu (vanilla) | 13.1 Mbits/s; 3% | 2m, two monitors in line of sight | Many "ghost MAC addresses"; unexplained performance/retry drop | https://files.reto-schneider.ch/rtl8xxxu/2021-07-23-Testing/2021-07-23-3-Linux-5.10.51-2021-07-22-vanilla-rtl8xxxu-edimax-08:be:ac:0b:14:c4-iperf-tx-tcp-3%25-retries-at-13.1MBps.pcapng.gz | | ||
+ | | amd64, Edimax | Linksys | Linux v5.10.51, 8192cu (tag rs/2021-07-23) | 4.02 Mbits/s; 17.2% | 2m, two monitors in line of sight | No "ghost MAC addresses"; Surprisingly bad performance | https://files.reto-schneider.ch/rtl8xxxu/2021-07-23-Testing/2021-07-23-5-Linux-5.10.51-2021-07-22-8192cu-edimax-08:be:ac:0b:14:c4-iperf-tx-tcp-16%25-retries-at-4.02MBps.pcapng.gz | | ||
+ | | amd64, Edimax | Linksys | Linux v5.10.51, 8192cu (tag rs/2021-07-23) | 3.91 Mbits/s; 18.8% | 2m, two monitors in line of sight | No "ghost MAC addresses"; Surprisingly bad performance | https://files.reto-schneider.ch/rtl8xxxu/2021-07-23-Testing/2021-07-23-6-Linux-5.10.51-2021-07-22-8192cu-edimax-08:be:ac:0b:14:c4-iperf-tx-tcp-18%25-retries-at-3.91MBps.pcapng.gz | | ||
+ | | amd64, Edimax | Linksys | Linux v5.10.51, 8192cu (tag rs/2021-07-23) | 49.7 Mbits/s; 4.8% | 1m, direct line of sight | Some "ghost MAC addresses" | https://files.reto-schneider.ch/rtl8xxxu/2021-07-23-Testing/2021-07-23-8-Linux-5.10.51-2021-07-22-8192cu-edimax-08:be:ac:0b:14:c4-iperf-tx-tcp-4.8%25-retries-at-49.7MBps.pcapng.gz | | ||
+ | | amd64, Edimax | Linksys | Linux v5.10.51, rtl8xxxu (vanilla) | 45.7 Mbits/s; 9.4% | 1m, direct line of sigh | No "ghost MAC addresses" | https://files.reto-schneider.ch/rtl8xxxu/2021-07-23-Testing/2021-07-23-10-Linux-5.10.51-2021-07-22-vanilla-rtl8xxxu-edimax-08:be:ac:0b:14:c4-iperf-tx-tcp-9.4%25-retries-at-45.7MBps.pcapng.gz | | ||
+ | | ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, 8192cu (tag rs/2021-07-23) | 30.6 Mbits/s; 0.9% | 1m, direct line of sigh | Some "ghost MAC addresses"; This is the kind of performance wanted | https://files.reto-schneider.ch/rtl8xxxu/2021-07-24-Testing/2021-07-24-3-Linux-5.10.52-8192cu-gateway-00:1d:43:c0:19:8a-iperf-tx-tcp-0.9%-retries-at-30.6MBps.pcapng.gz | | ||
+ | | ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, 8192cu (tag rs/2021-07-23) | 42.5 Mbits/s; 2.4% | 1m, direct line of sigh | Some "ghost MAC addresses"; This is the kind of performance wanted | https://files.reto-schneider.ch/rtl8xxxu/2021-07-24-Testing/2021-07-24-4-Linux-5.10.52-8192cu-gateway-00:1d:43:c0:19:8a-iperf-tx-tcp-2.4%-retries-at-42.5MBps.pcapng.gz | | ||
+ | | ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, rtl8xxxu (vanilla) | 12.5 Mbits/s; 17% | 1m, direct line of sigh | Many "ghost MAC addresses" | https://files.reto-schneider.ch/rtl8xxxu/2021-07-24-Testing/2021-07-24-1-Linux-5.10.52-vanilla-rtl8xxxu-gateway-00:1d:43:c0:19:8a-iperf-tx-tcp-17%-retries-at-12.5MBps.pcapng.gz | | ||
+ | | ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, rtl8xxxu (patch 10; tag gardena/rs/v5.10.52-rtl8xxxu-writeup-1-reduce-usb-interrupt-v1) | 20.6 Mbits/s; 12% | 1m, direct line of sigh | Few(er) "ghost MAC addresses"; Clear improvement over vanilla | https://files.reto-schneider.ch/rtl8xxxu/2021-07-24-Testing/2021-07-24-9-Linux-5.10.52-rtl8xxxu-1-usb-interrupt-reduction-gateway-00:1d:43:c0:19:8a-iperf-tx-tcp-12.0%-retries-at-20.6MBps.pcapng.gz | | ||
+ | | ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, rtl8xxxu (patches 10, 7; gardena/rs/v5.10.52-rtl8xxxu-writeup-3-tx-apdu-aggregation-v1) | 24.3 Mbits/s; 39.9% | 1m, direct line of sigh | Tons of "ghost MAC addresses"; Performance improved, but *terrible* retry rate | https://files.reto-schneider.ch/rtl8xxxu/2021-07-27-Testing/2021-07-27-1-Linux-5.10.52-rtl8xxxu-3-tx-apdu-aggregation-gateway-00:1d:43:c0:19:8a-iperf-tx-tcp-39.9%25-retries-at-24.3MBps.pcapng.gz | | ||
+ | | ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, rtl8xxxu (patches 10, 8; tag gardena/rs/v5.10.52-rtl8xxxu-writeup-4-hw-rts-v1) | 15.2 Mbits/s; 17.7% | 1m, direct line of sigh | Few "ghost MAC addresses"; Throughout and retry percentage worsened | https://files.reto-schneider.ch/rtl8xxxu/2021-07-27-Testing/2021-07-27-3-Linux-5.10.52-rtl8xxxu-writeup-4-hw-rts-gateway-00:1d:43:c0:19:8a-iperf-tx-tcp-17.7%25-retries-at-15.2MBps.pcapng.gz | | ||
+ | | ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, rtl8xxxu (patches 10, 8, 7; tag gardena/rs/v5.10.52-rtl8xxxu-writeup-5-ampdu-v1) | 20.8 Mbits/s; 46.5% | 1m, direct line of sigh | Many "ghost MAC addresses"; Terrible retry performance; Patch 9 does not change this. | https://files.reto-schneider.ch/rtl8xxxu/2021-07-27-Testing/2021-07-27-5-Linux-5.10.52-rtl8xxxu-writeup-5-ampdu-v1-gateway-00:1d:43:c0:19:8a-iperf-tx-tcp-46.5%25-retries-at-20.8MBps.pcapng.gz | | ||
+ | |||
+ | == TCP RX Throughput == | ||
+ | |||
+ | | **DUT** | **AP** | **Driver** | **Throughput [Mbits/sec]; retries [%]** | **AP <-> DUT** | **Notes** | **PCAP** | | ||
+ | | amd64, Edimax | Linksys | Linux v5.10.51, rtl8xxxu (vanilla) | 38.9 Mbits/s; 16% | 2m, two monitors in line of sight | Many "ghost MAC addresses" | https://files.reto-schneider.ch/rtl8xxxu/2021-07-23-Testing/2021-07-23-2-Linux-5.10.51-2021-07-22-vanilla-rtl8xxxu-edimax-08:be:ac:0b:14:c4-iperf-rx-tcp-16%25-retries-at-37.2MBps.pcapng.gz | | ||
+ | | amd64, Edimax | Linksys | Linux v5.10.51, rtl8xxxu (vanilla) | 41.7 Mbits/s; 15.6% | 2m, two monitors in line of sight | Many "ghost MAC addresses" | https://files.reto-schneider.ch/rtl8xxxu/2021-07-23-Testing/2021-07-23-4-Linux-5.10.51-2021-07-22-vanilla-rtl8xxxu-edimax-08:be:ac:0b:14:c4-iperf-rx-tcp-15.6%25-retries-at-41.7MBps.pcapng.gz | | ||
+ | | amd64, Edimax | Linksys | Linux v5.10.51, 8192cu (tag rs/2021-07-23) | 41.8 Mbits/s; 10% | 2m, two monitors in line of sight | Many "ghost MAC addresses" | https://files.reto-schneider.ch/rtl8xxxu/2021-07-23-Testing/2021-07-23-7-Linux-5.10.51-2021-07-22-8192cu-edimax-08:be:ac:0b:14:c4-iperf-rx-tcp-10%25-retries-at-41.4MBps.pcapng.gz | | ||
+ | | amd64, Edimax | Linksys | Linux v5.10.51, 8192cu (tag rs/2021-07-23) | 49.7 Mbits/s; 9.9% | 1m, direct line of sight | Many "ghost MAC addresses" | https://files.reto-schneider.ch/rtl8xxxu/2021-07-23-Testing/2021-07-23-9-Linux-5.10.51-2021-07-22-8192cu-edimax-08:be:ac:0b:14:c4-iperf-rx-tcp-4.8%25-retries-at-49.7MBps.pcapng.gz | | ||
+ | | amd64, Edimax | Linksys | Linux v5.10.51, rtl8xxxu (vanilla) | 47.5 Mbits/s; 10.8% | 1m, direct line of sight | Many "ghost MAC addresses" | https://files.reto-schneider.ch/rtl8xxxu/2021-07-23-Testing/2021-07-23-11-Linux-5.10.51-2021-07-22-vanilla-rtl8xxxu-edimax-08:be:ac:0b:14:c4-iperf-rx-tcp-10.9%25-retries-at-47.5MBps.pcapng.gz | | ||
+ | | ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, 8192cu (tag rs/2021-07-23) | 47.3 Mbits/s; 0.2% | 1m, direct line of sigh | Zero "ghost MAC addresses"; This is the kind of performance wanted. | https://files.reto-schneider.ch/rtl8xxxu/2021-07-24-Testing/2021-07-24-5-Linux-5.10.52-8192cu-gateway-00:1d:43:c0:19:8a-iperf-rx-tcp-0.2%-retries-at-47.3MBps.pcapng.gz | | ||
+ | | ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, rtl8xxxu (vanilla) | 24.4 Mbits/s; 28.2% | 1m, direct line of sigh | Many "ghost MAC addresses"; This performance needs to be optimized | https://files.reto-schneider.ch/rtl8xxxu/2021-07-24-Testing/2021-07-24-7-Linux-5.10.52-vanilla-rtl8xxxu-gateway-00:1d:43:c0:19:8a-iperf-rx-tcp-28.2%25-retries-at-24.4MBps.pcapng.gz | | ||
+ | | ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, rtl8xxxu (patch 10) | 33.1 Mbits/s; 27% | 1m, direct line of sigh | Many "ghost MAC addresses"; Slight improvement thanks to patch #10 | https://files.reto-schneider.ch/rtl8xxxu/2021-07-24-Testing/2021-07-24-10-Linux-5.10.52-rtl8xxxu-1-usb-interrupt-reduction-gateway-00:1d:43:c0:19:8a-iperf-rx-tcp-27%-retries-at-33.1MBps.pcapng.gz | | ||
+ | | ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, rtl8xxxu (patches 10, 7) | 12.4 Mbits/s; 22.3% | 1m, direct line of sigh | Very few "ghost MAC addresses"; Slightly improved retry rate, but terrible throughput | https://files.reto-schneider.ch/rtl8xxxu/2021-07-27-Testing/2021-07-27-2-Linux-5.10.52-rtl8xxxu-3-tx-apdu-aggregation-gateway-00:1d:43:c0:19:8a-iperf-rx-tcp-22.3%25-retries-at-12.4MBps.pcapng.gz | | ||
+ | | ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, rtl8xxxu (patches 10, 8) | 32.8 Mbits/s; 25.9% | 1m, direct line of sigh | No "ghost MAC addresses"; Retry percentage slightly improved | https://files.reto-schneider.ch/rtl8xxxu/2021-07-27-Testing/2021-07-27-4-Linux-5.10.52-rtl8xxxu-writeup-4-hw-rts-gateway-00:1d:43:c0:19:8a-iperf-rx-tcp-25.9%25-retries-at-32.8MBps.pcapng.gz | | ||
+ | | ARMv5, GARDENA smart Gateway (00:1d:43:c0:19:8a) | Linksys | Linux v5.10.52, rtl8xxxu (patches 10, 8, 7) | 8.29 Mbits/s; 26.5% | 1m, direct line of sigh | Terrible overall performance. Patch 9 does not change this. | https://files.reto-schneider.ch/rtl8xxxu/2021-07-27-Testing/2021-07-27-6-Linux-5.10.52-rtl8xxxu-writeup-5-ampdu-v1-gateway-00:1d:43:c0:19:8a-iperf-rx-tcp-26.5%25-retries-at-8.29MBps.pcapng.gz | | ||
+ | |||
+ | === Chris === | ||
+ | |||
+ | == TCP TX Throughput == | ||
+ | |||
+ | | **DUT** | **AP** | **Driver** | **Throughput [Mbits/sec]; retries [%]** | **AP <-> DUT** | **Notes** | **PCAP** | | ||
+ | | amd64, Edimax | DLink | Linux v5.13.1 rtl8xxxu | 23~27 Mbits/s; 12~14% | 3m, direct line of sight | performance drop for a few seconds | https://mega.nz/folder/LI0ATTAK#0E2J5DHksD1jQi1oJCOJWg | | ||
+ | | amd64, Edimax | DLink | Linux v5.13.1 rtl8xxxu | 7-14 Mbits/s; 16~20% | 6m, direct line of sight | performance drop to 0 sometimes | https://mega.nz/folder/vMdgADRD#XHljNHbzzlp63qqFsT-rkQ | | ||
+ | | amd64, Edimax | DLink | Linux v5.12, 8192cu (https://github.com/mschiu77/rtl8188cus_vendor.git master) | 40~42 Mbits/s; 9% | 3m, direct line of sight | steady performance | https://mega.nz/folder/GAcwnDjY#Xf9lVMriWcPpIUACjuZiqg | | ||
+ | | amd64, Edimax | DLink | Linux v5.12, 8192cu ((https://github.com/mschiu77/rtl8188cus_vendor.git master) | 13-16 Mbits/s; 20~23% | 6m, direct line of sight | steady throughput w/o sudden drop | https://mega.nz/folder/HZ8iQRqY#2ss6WW9u6oxInJvT2R6iCw | | ||
- | | **Priority** | **Task** | **Wi-Fi Alliance Test Case** | **State** | **Optional** | | + | == TCP RX Throughput == |
- | | 1 | ACK #1: Fix Block ACKs to included (ack) recently sent frames | n/a (but a prerequisite) | WIP | n | | + | |
- | | 2 | ACK #1: Fix regular ACKs to work also with non-MCS2 packets | n/a (but a prerequisite) | WIP | n | | + | |
- | | unknown | Allow setting TX power limit via iw | none, but needed for EMC | implemented, needs to be verified by GARDENA | n | | + | |
- | | unknown | TX Power: power by rate. | none, but maybe required for EMC | not yet implemented | n | | + | |
- | | unknown | A-MSDU (RX support) | 5.2.38 | not yet implemented | n | | + | |
- | | unknown | WMM: Wi-Fi Multimedia | many | not yet implemented | n (but ASD?) | | + | |
- | | unknown | 802.11n: STBC Receive | 5.2.46 | implemented, needs to be verified | n | | + | |
- | | unknown | A-MPDU: #1. Handle ampdu_action properly on TX. Ex.ADDBA, DELBA, BAR | 5.2.47 | implemented, needs to be verified | n | | + | |
- | | unknown | A-MPDU: #2. Make sure BAR to be handled correctly on RX | 5.2.47 | not yet implemented | n | | + | |
- | | unknown | iw station dump: "tx bitrate: (unknown)" (n/a) | n/a | fixed | y | | + | |
- | | unknown | iw output: "Available Antennas: TX 0 RX 0" (n/a) | n/a | fixed | y | | + | |
- | | unknown | Reach MCS5 ~ MCS7 rate under rate control | n/a | not yet implemented | y | | + | |
- | | unknown | Protected Management Frames (For WPA3 support) | unknown | not yet implemented, HW support unknown (RTL8188CUS) | y | | + | |
- | | unknown | CRDA + RegDB support: Static TX power limit, global | unknown | not yet implemented | y | | + | |
- | | unknown | CRDA + RegDB support: Country support (implement regd_notifier()) | unknown | not yet implemented | y | | + | |
- | | none | Greenfield mode | 5.2.41 (no longer existing) | not yet implemented | y | | + | |
- | | unknown | Regulatory domain: Hook the TX power set/get of the cfg80211 to the driver | none | not yet implemented | y | | + | |
- | Source: https://github.com/mschiu77/linux (check out recent branches) | + | | **DUT** | **AP** | **Driver** | **Throughput [Mbits/sec]; retries [%]** | **AP <-> DUT** | **Notes** | **PCAP** | |
+ | | amd64, Edimax | DLink | Linux v5.13.1 rtl8xxxu | 36 Mbits/s; 12% | 3m, direct line of sight | performance is stable high | https://mega.nz/folder/3Zs0nDrK#i1fnW6Bp5E_jeC3dcPlWaw | | ||
+ | | amd64, Edimax | DLink | Linux v5.13.1 rtl8xxxu | 16 Mbits/s; 30% | 6m, direct line of sight | performance is stably low | https://mega.nz/folder/TcsQAZoI#VbQiPZF1B7EJK1_82x2kOg | |