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/08/11 09:48] Ming Shuo Chiu [Table] |
en:users:wi-fi-alliance-certification [2021/10/18 09:22] Reto Schneider [Table] Patch #8 wil not be upstreamed |
||
---|---|---|---|
Line 17: | Line 17: | ||
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. | 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 40: | Line 41: | ||
== Chris == | == Chris == | ||
- | * AP: ? | + | * AP: Dlink DIR-612 (2x2) SSID: CHT57196 with BSSID: 18:0f:76:c5:0a:ea |
* STA: rtl8xxxu running on Edimax EW-7811UN (amd64) | * STA: rtl8xxxu running on Edimax EW-7811UN (amd64) | ||
- | * Distance: ? | + | * Distance: fixed to 3m and 6m for experiment |
- | * Environment: ? | + | * Environment: use less-noisy channel 9 in a 8x9 square meters area which only have 1 router. |
=== Baseline === | === Baseline === | ||
Line 115: | Line 116: | ||
</code> | </code> | ||
- | Unsure if this is a common issue. | + | <del>Unsure if this is a common issue.</del> Seems hardware specific - USB dongle probably broken. |
== RX IQK failed == | == RX IQK failed == | ||
Line 148: | Line 149: | ||
</code> | </code> | ||
- | Unsure if this is a common issue. | + | <del>Unsure if this is a common issue.</del> Seems hardware specific - USB dongle probably broken. |
=== Patches === | === Patches === | ||
- | | **Number** | **Description** | **Link** | **Testing results (Reto)** | **Upstream State** | | + | | **Number** | **Description** | **Link** | **Testing results (Reto)** | **Upstream State** | |
- | | 1 | Handle BSS_CHANGED_TXPOWER/IEEE80211_CONF_CHANGE_POWER | https://github.com/husqvarnagroup/linux/commit/798796ff5070255a7cccc7529c272b629da79d7b | | | | + | | 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 | | | | + | | 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 | | | | + | | 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 | | | | + | | 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 | | | | + | | 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 | | | | + | | 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 | | + | | 7 | Fix the handling of TX A-MPDU aggregation | https://lore.kernel.org/linux-wireless/20210804151325.86600-1-chris.chiu@canonical.com/ | GARDENA gateway: Improves TX throughput, but worsens retry percentage; Reverse issue for RX. | Merged | |
- | | 8 | Improve the retransmission rate with HW_RTS enable | https://github.com/husqvarnagroup/linux/commit/31a00cbf0245877e9a98cdec6903758a928482e5 | GARDENA gateway: Neither troughput nor retry percentage improved | | | + | | 8 | Improve the retransmission rate with HW_RTS enable | https://github.com/husqvarnagroup/linux/commit/31a00cbf0245877e9a98cdec6903758a928482e5 | GARDENA gateway: Neither throughput 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 | | | + | | 9 | Set RTS rate to 24M for AMPDU | https://github.com/husqvarnagroup/linux/commit/b35338e600b003f830c4533c162a53c57d9d34d2 | GARDENA gateway: No positive effects observable | will not be upstreamed | |
- | | 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 | | + | | 10 | Reduce number of USB interrupts | https://lore.kernel.org/linux-wireless/d32690a6-f679-c676-1461-10b47ae3428b@gmail.com/ | GARDENA gateway: Clearly improves throughput and retries | Merged | |
+ | | 11 | Use lower tx rates for the ack packet | https://lore.kernel.org/linux-wireless/20211001040044.1028708-1-chris.chiu@canonical.com/ | GARDENA gateway: Neither throughput nor retry percentage improved | Merged | | ||
==== Driver Testing ==== | ==== Driver Testing ==== | ||
Line 217: | Line 219: | ||
=== Chris === | === Chris === | ||
+ | |||
+ | == Setup == | ||
+ | - Blacklist all drivers (rlt8xxxu, 8192cu, rtl8192cu) | ||
+ | - Ensure no drivers are loaded | ||
+ | - Load driver to be tested (rlt8xxxu, 8192cu) with insmod | ||
+ | - Start 802.11 capture | ||
+ | - Once IP address got assigned, measure the performance using iperf3: | ||
+ | * TCP TX Throughput: <code>iperf3 -c 192.168.0.11 -t 30 -i 1</code> | ||
+ | * TCP RX Throughput: <code>iperf3 -c --reverse 192.168.0.11 -t 30 -i 1</code> | ||
+ | |||
+ | == Repos == | ||
+ | * Linux: https://github.com/mschiu77/linux/tree/chris/ampdu_action | ||
+ | * 8192cu: https://github.com/mschiu77/rtl8188cus_vendor | ||
+ | |||
+ | == 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 == | == TCP TX Throughput == | ||
Line 228: | Line 248: | ||
== TCP RX Throughput == | == TCP RX Throughput == | ||
- | | **DUT** | **AP** | **Driver** | **Throughput [Mbits/sec]; retries [%]** | **AP <-> DUT** | **Notes** | **PCAP** | | + | | **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/LI0ATTAK#0E2J5DHksD1jQi1oJCOJWg | | + | | 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/vMdgADRD#XHljNHbzzlp63qqFsT-rkQ | | + | | 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 | |
+ | | amd64, Edimax | DLink | Linux v5.12, 8192cu | 35 Mbits/s; 10% | 3m, direct line of sight | performance is stable high | https://mega.nz/folder/KIsmCBRR#rN9X9sXrdLo7It8qj8PQgQ | | ||
+ | | amd64, Edimax | DLink | Linux v5.12, 8192cu | 20 Mbits/s; 11% | 6m, direct line of sight | performance and retry are better than rtl8xxxu | https://mega.nz/folder/2Q1WBJqS#6dU1pQ9OXbveETqlfQcZ2w | | ||
+ | |||
+ | ==== Driver Comparisation ==== | ||
+ | |||
+ | | **Criterion** | **rtl8xxxu** | **rtl8192cu** | **8192cu** | **Comment** | | ||
+ | | wlan.frag != 1 | rarely | often | never | Maybe a side-effect of failed transfers. Never sent by AP. | | ||
+ | | Block ACK Initiator | STA, then AP | AP, then AP | AP, then STA | | | ||
+ | | Block ACK Starting Sequence Control | oldest possible sequence # | | first non-acked sequence # | Should be benign, see https://gjermundraaen.com/2021/03/29/802-11-compressed-blockack-two-different-behaviors/ | | ||
+ | | A-MSDU | Permitted when ADDBA initiated by STA, not when by AP | alway permitted | never permitted | | | ||
+ | | Block ACK Timeout [1024 us] | 0x0 (disabled) | 0x1388 | 0x1388 | | | ||
+ | | wlan.qos.amsdupresent == 1 | some | | | | |