kaloz / mwlwifi

mac80211 driver for the Marvell 88W8864 802.11ac chip
397 stars 119 forks source link

Improve stability #408

Closed jbsky closed 1 year ago

jbsky commented 1 year ago

Hello,

Please find in this MR:

Performance is good.

This copy is tested with V1 version only. Please test with other router version. I wait for your feedback.

The remaining noticed errors are :

To be precise, these problems exist with the master copy.

image Above is the test network I set up. It doesn't solve all the problems like broadcast, but in this kind of conf, it's stable since 2 days. I can work from the AP 2.4 of the wrt1900ac and work on my local network without latency.

Signed-off-by: Julien Blais webmaster@jbsky.fr

BrainSlayer commented 1 year ago

added for testing in dd-wrt sourctree

BrainSlayer commented 1 year ago

tested on WRT1900ACS and WRT3200ACM so far. no visible issues

jbsky commented 1 year ago

Hello @kaloz,

Can you please check and merge. You can also create a tag, that would be nice.

Thank you very much,

Sincerely,

Julien Blais

olimpiumarius commented 1 year ago

Hello all, Thank you for your involvement and implementation of this update!

Following the tests performed on the wrt1900acs v2, I noticed the following anomalies: I did some tests in the speed test while I left a ping and you can see how it influences,the ping is left on the PC, it is clear that when I did the test on the phone the ping was already suffering, when I did it on the PC it started to increase and from there the constant ping increase!

you can find more details about the settings here!

https://forum.openwrt.org/t/linksys-wrt1900acs-v2-openwrt-snapshot/157825/5

Pinging 192.168.15.1 with 32 bytes of data:
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=3ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=13ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=4ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=3ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=4ms TTL=64
Reply from 192.168.15.1: bytes=32 time=5ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=2ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=15ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=2ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=3ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=8ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=4ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=8ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=2ms TTL=64
Reply from 192.168.15.1: bytes=32 time=5ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=2ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=6ms TTL=64
Reply from 192.168.15.1: bytes=32 time=371ms TTL=64 - speed test smartphone
Reply from 192.168.15.1: bytes=32 time=2034ms TTL=64
Reply from 192.168.15.1: bytes=32 time=123ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1037ms TTL=64
Reply from 192.168.15.1: bytes=32 time=710ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1979ms TTL=64
Reply from 192.168.15.1: bytes=32 time=2287ms TTL=64
Reply from 192.168.15.1: bytes=32 time=2ms TTL=64     - after speed test
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=4ms TTL=64
Reply from 192.168.15.1: bytes=32 time=3ms TTL=64
Reply from 192.168.15.1: bytes=32 time=2ms TTL=64
Reply from 192.168.15.1: bytes=32 time=8ms TTL=64
Reply from 192.168.15.1: bytes=32 time=9ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=4ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=12ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=3ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=3419ms TTL=64   -  Speed test wifi pc
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=42ms TTL=64
Reply from 192.168.15.1: bytes=32 time=38ms TTL=64
Reply from 192.168.15.1: bytes=32 time=3099ms TTL=64
Reply from 192.168.15.1: bytes=32 time=26ms TTL=64
Reply from 192.168.15.1: bytes=32 time=33ms TTL=64
Reply from 192.168.15.1: bytes=32 time=42ms TTL=64
Reply from 192.168.15.1: bytes=32 time=39ms TTL=64
Reply from 192.168.15.1: bytes=32 time=2965ms TTL=64
Reply from 192.168.15.1: bytes=32 time=30ms TTL=64
Reply from 192.168.15.1: bytes=32 time=25ms TTL=64
Reply from 192.168.15.1: bytes=32 time=14ms TTL=64
Reply from 192.168.15.1: bytes=32 time=15ms TTL=64
Reply from 192.168.15.1: bytes=32 time=3462ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=7ms TTL=64
Reply from 192.168.15.1: bytes=32 time=3ms TTL=64
Reply from 192.168.15.1: bytes=32 time=5ms TTL=64
Reply from 192.168.15.1: bytes=32 time=3389ms TTL=64 - after the speed test the ping changes
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=4ms TTL=64
Reply from 192.168.15.1: bytes=32 time=6ms TTL=64
Reply from 192.168.15.1: bytes=32 time=3312ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=4ms TTL=64
Reply from 192.168.15.1: bytes=32 time=2448ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=3417ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=3416ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=3278ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64
Reply from 192.168.15.1: bytes=32 time=8ms TTL=64
Reply from 192.168.15.1: bytes=32 time=2441ms TTL=64
Reply from 192.168.15.1: bytes=32 time=9ms TTL=64
Reply from 192.168.15.1: bytes=32 time=40ms TTL=64
Reply from 192.168.15.1: bytes=32 time=42ms TTL=64
Reply from 192.168.15.1: bytes=32 time=36ms TTL=64
Reply from 192.168.15.1: bytes=32 time=3408ms TTL=64
Reply from 192.168.15.1: bytes=32 time=20ms TTL=64
Reply from 192.168.15.1: bytes=32 time=1ms TTL=64

Ping statistics for 192.168.15.1:
    Packets: Sent = 217, Received = 217, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 1ms, Maximum = 3462ms, Average = 218ms

On the forum I saw some problems also related to this update!

https://forum.openwrt.org/t/divested-wrt-no-nonsense-hardened-builds-for-linksys-wrt-series/80522/1097

loomy commented 1 year ago

same Problem here. I had to revert this patch. I noticed ARP Drops for clients, when a client switches between 2 and 5 Ghz WiFi. not the switching client but the others.

I see the ARP Requests for the Routers MAC coming in on my wrt3200 , but no responses going out

jbsky commented 1 year ago

Thank you for your feedback.

If you have regression, do not hesitate to revert this merge. However, if you want to help a little, you can revert commit 1 by 1 to see which patch causes the regression. Thanks for your help.

I noticed that this driver has a regression with a linux 6 kernel compared to a version in WDS STA mode. I am still looking for stability with this material.

Trying to do something alone on this driver is not an easy thing and so, all the good wills are welcome.

Sincerely,

olimpiumarius commented 1 year ago

I want to make a clarification, the wifi part is supported by the ROG MAXIMUS X CODE motherboard, in order to obtain stability and performance I had to make some settings: 802.11b-Enable Beacon Interval - 100 Concurrent Operation Preference - No preference Multi Channel Concurrent - Enabled+Hostpot (this setting mattered a lot, basically it is enable or disabled) Preamble Mode - Short & long the rest by default! Realtek 8822BE Wireless LAN 802.11ac PCI-E NIC

pesa1234 commented 1 year ago

Thank you for your feedback.

If you have regression, do not hesitate to revert this merge. However, if you want to help a little, you can revert commit 1 by 1 to see which patch causes the regression. Thanks for your help.

I noticed that this driver has a regression with a linux 6 kernel compared to a version in WDS STA mode. I am still looking for stability with this material.

Trying to do something alone on this driver is not an easy thing and so, all the good wills are welcome.

Sincerely,

I'm trying to remove one by one commit... at this moment we have this issue... #409

pesa1234 commented 1 year ago

This commit is responsible of disconnection... https://github.com/kaloz/mwlwifi/pull/408/commits/9f991fdee60e7b251177d911b6def2a77c1259c9

tamer-hassan commented 1 year ago

Tested on WRT3200ACM

Compared to the old mwlwifi (without @jbsky patches), the performance is noticeably worse, with AMSDU on or off.

i.e. now getting at best 390-400Mbps with iperf3, despite being connected at 1300Mbps (Macbook pro 2019)

Previously, was getting consistent 570-600Mbps (also while connected at 1300Mbps from Macbook pro 2019).

tamer-hassan commented 1 year ago

Sorry, it seems after I upgraded I forgot to include in my config globals: option packet_steering '1'

hence why my throughput results were skewed.

tamer-hassan commented 1 year ago

I conducted my tests again

root@WRT3200ACM:~# cat /sys/kernel/debug/ieee80211/phy0/mwlwifi/tx_amsdu
tx amsdu: enable
root@WRT3200ACM:~# grep -A2 globals /etc/config/network
config globals 'globals'
    option ula_prefix 'fdff:c666:414c::/48'
    option packet_steering '1'

The best throughput I now get:

- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-30.00  sec  2.54 GBytes   728 Mbits/sec                  sender
[  5]   0.00-30.01  sec  2.54 GBytes   728 Mbits/sec                  receiver

The worst throughput:

- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-30.00  sec  2.33 GBytes   667 Mbits/sec                  sender
[  5]   0.00-30.02  sec  2.33 GBytes   666 Mbits/sec                  receiver

With old mlwifi (20200206-3) --- 192.168.100.1 ping statistics --- 38 packets transmitted, 38 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 2.564/7.462/11.055/2.903 ms

With mlwifi 10.3.9.1-20230429 --- 192.168.100.1 ping statistics --- 38 packets transmitted, 38 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 2.310/4.677/10.057/3.014 ms

As you can see, with comparable configuration (both packet_steering enabled), and AMSDU enabled with latest mlwifi (vs AMSDU disabled in old mlwifi), I get a bit less throughput (666Mbps-728Mbps) vs old mlwifi (consistently 741Mbps), but I do get better latency.

Edit: After wifi has been up for a little longer, further test of throughput shows better results with mlwifi 10.3.9.1 than the old mlwifi (20200206-3)

[ ID] Interval           Transfer     Bitrate
[  5]   0.00-30.00  sec  2.75 GBytes   789 Mbits/sec                  sender
[  5]   0.00-30.01  sec  2.75 GBytes   788 Mbits/sec                  receiver