Adding OpenWrt support for Xiaomi AX3600 (Part 1)

Yes, meaning dchard must see napi threads now in wan-lan, but looks like his cpu load shows different...

I have seen max load on 2 cores with threaded NAPI, it doesn't really help too much for IRQ based workloads, but rather raw polling

1 Like

This is when the DL is capped at 500Mbits:

image

You can see the NAPI threads as well.

1 Like

Well, it's still just one thread per netdev.
To put it mildly, performance on the ethernet adapter sucks as the driver is shit.
Half-duplex is kind of good, but if you try bidirectional mode RX speed sucks.

Switch itself looks quite advanced and is capable of bandwidth and queue management, various L3 operations and QoS, but the only docs for it is the SSDK which at least has the bits documented but good luck adding new features.

2 Likes

The %d we see in napi commands above is purely cosmetic ?

Its probably QCA messing up the netdev name during registration

1 Like

It is possible that I am doing something wrong, but especially since the last pull, performance is clearly affected. As always, if you have an idea what to test or try, I am at your disposal :slight_smile:

1 Like

The threaded NAPI is looking really good for my "dumb AP" use case. Whereas before I would see core 0 pegged at 100% during heavy LAN-WLAN transfers (near 1Gb/s), now the highest single core load is always changing cores and still bellow the near 100% previously observed in core 0. The (wifi) throughput remains the same, near gigabit.

I am running irqbalance and applied the beamforming patch from the ath11k mailing list. Too early to make any stability claims, but it's definitely looking better (for my use case).

1 Like

Played again with my second ax3600 and connection to my mesh via 2.4GHz. So it can connect and also LAN Clients can use the net. But DNS Queries are still wonky.

Directly on the ax3600 connected via mesh:

root@titanio:~# nslookup  openwrt.org
;; connection timed out; no servers could be reached

root@titanio:~# nslookup -type=a openwrt.org
Server:         192.168.11.1
Address:        192.168.11.1:53

Non-authoritative answer:
Name:   openwrt.org
Address: 139.59.209.225

root@titanio:~# nslookup -type=aaaa openwrt.org
Server:         192.168.11.1
Address:        192.168.11.1:53

Non-authoritative answer:
Name:   openwrt.org
Address: 2a03:b0c0:3:d0::1af1:1

root@titanio:~# nslookup -type=any openwrt.org
Server:         192.168.11.1
Address:        192.168.11.1:53

Non-authoritative answer:
Name:   openwrt.org
Address: 139.59.209.225
openwrt.org     nameserver = ns1.digitalocean.com
openwrt.org     nameserver = ns2.digitalocean.com
openwrt.org     nameserver = ns3.digitalocean.com
openwrt.org
        origin = ns1.digitalocean.com
        mail addr = hostmaster.openwrt.org
        serial = 1655385680
        refresh = 10800
        retry = 3600
        expire = 604800
        minimum = 1800
openwrt.org     mail exchanger = 10 util-01.infra.openwrt.org
openwrt.org     text = "google-site-verification=97QkAokBcj-8YxpRIxK87XUcn9N1kvq7w9_0UuvGjMg"
openwrt.org     text = "v=spf1 ip4:46.101.232.90 ip6:2001:470:1f0b:a42::1 -all"
Name:   openwrt.org
Address: 2a03:b0c0:3:d0::1af1:1



But very often i get this

root@titanio:~# nslookup -type=any openwrt.org
Server:         192.168.11.1
Address:        192.168.11.1:53

** server can't find openwrt.org: NOTIMP

This also results in nonworking opkg updates --> Failed to send request: Operation not permitted

I have one other mesh-node access point (but an old wndr3800 with 22.03) which doesn't have any of this issues.

Any suggestions how to debug this?

1 Like

Its weird to see the thread so quiet today

1 Like

maybe i shouldn‘t have posted my issue :frowning:

Nah, everybody is free to post anything that is even remotely regarding AX3600 and the SoC in general

1 Like

QCA finally pushed updated ath11k FW, now straight to 2.7.01 version, I did some brief testing and for me it works so I updated the package to it.

Ahh, scratch that, it works fine in AP mode, however trying to stop the remoteproc will cause it to panic and thus upgrading will fail, reverting it for now.

I'm getting addicted to FW updates, something I always liked to do.
It will a problem when this is released and I'll still need my weekly FW fix. :slight_smile:

Then you can have a daily fix as the buildbots will crank a new image almost every day

1 Like

Didn't remember that, I'll have my fix. :slight_smile:
I do like to see that we are ahead or in sync with master.
With new HW being supported, it's good to be on the bleeding edge.



EDIT: @all
WAN<->WiredLAN iperf3 full-duplex tests

Test#1: SW flow offloading: ON, Packet Steering: ON, GRO: ON
-> Robi build 2022-06-27: always 912/744Mbits
image

-> Robi build 2022-06-29: Run#1:918/479Mbits; Run#2:801/525Mbits; Run#3:923/500Mbits; Run#4:929/700Mbits; Run#5:880/513Mbits
I get different results each time I run the same test, this load is for 930/542Mbits:
image


Test#2: SW flow offloading: ON, Packet Steering: ON, GRO: OFF (eth0, eth1, eth2, eth3)
-> Robi build 2022-06-27: always 931/932Mbits
image

-> Robi build 2022-06-29: always around 920/910Mbits
image


Test#3: SW flow offloading: OFF, Packet Steering: OFF, GRO: ON
-> Robi build 2022-06-27: always 902/132Mbits
image

-> Robi build 2022-06-29: always around 868/102Mbits
image


Test#4: SW flow offloading: OFF, Packet Steering: OFF, GRO: OFF
-> Robi build 2022-06-27: always 727/85Mbits
image
-> Robi build 2022-06-29: always around 620/78Mbits
image


Notes

I have IPv6 disable in all tests, because I wasn't using it.
I don't have the IRQ CPU affinity mods that @dchard is using, but from his results, it looks like it's a must have.
I'm still using my AX3600s as dumb APs because I can't disconnect internet here in my constant testing, so I don't have real world experience in wan/lan.



I have 500/100, this is internet speedtest (half-duplex), cpu load screens are from the download part.
Lastest build with everything on (except IRQ mods), my TPLINK is my router and behind is AX3600 configured as a router for the test (double NAT).
image

2 Likes

Don't you worry, I am building the new version right now :slight_smile:

i concur it will be nice to have frequent builds that refresh against the openwrt master baseline ... including the dynalink (I know Robi haven't looked at it recently ... but still will be nice to have this frequent on the dynalink as from my perspective is very stable and performant ...)

1 Like

@robimarko with the latest mods, no matter what I do, I cant get more than 500Mbits (DL, PPPoE):

image

GRO, packet steering, SW offload and IRQ mods are ON.

Previously with packet steering, SW offload and IRQ mods are ON, I was able to reach 930-940Mbits DL.

Same settings, LAN-LAN iperf3 (speed is 920Mbits, lots of retransmissions).

image

1 Like

Hi,
I'm new posting here but have been silently following this thread for almost a year (since I bought the Xiaomi AX3600).
I lost track of it for a couple of months and last week I finally "got back" and installed openWRT using @robimarko builds (thank you).

I understand it's still a pre release but it's way better than I was expecting.
Previously I used DD-WRT on another older router and this is the first time I used openWRT... If I remember correctly dd-wrt's UI was a bit "friendlier" in some configurations... I guess it's just different, another learning curve.

I'm an "IT" guy... developer, devop, whatever... but mostly .NET stuff, never messed with nothing like this.

First of all... thank you all for developing, building and supporting this firmware.

Second... there's some quirks I experienced that I don't know if it's some bad configuration or something on the firmware.

Last week I lost wifi twice on a row... everything else seemed to work.
First I noticed that the wifi "disappeared"... I thought "ok, maybe a bug or something because I was changing and experimenting with some settings, no biggie", rebooted, wifi came to life again.
No more than 30 minutes later I lost wifi again.
I checked the system log both times and noticed It was completely spammed by a message of a wireless client failing to connect:

daemon.notice hostapd: wlan2-1: STA xx:xx:xx:xx:xx:xx IEEE 802.11: did not acknowledge authentication response

The device is an IOT window blind from an empty store near by... I added to my IOT devices network by mistake, and removed it after... I guess the owner never changed the configuration and it's still trying to connect to my 2.4 wifi network)
I believe this made the wifi crash... not sure if the excessive connection attempts or the system log spam.
I had to use the MAC-Filter on that wifi network to filter out this device and that prevented the messages on the log and didn't have that problem again.

Now I noticed I also have another problem with one android phone.
Every time it connects to the 2.4 wifi it spams the system log repeatedly with:

daemon.notice hostapd: wlan2: STA-OPMODE-SMPS-MODE-CHANGED xx:xx:xx:xx:xx:xx off
daemon.notice hostapd: wlan2: STA-OPMODE-SMPS-MODE-CHANGED xx:xx:xx:xx:xx:xx static

It only happens with this phone on the 2.4 wifi, on 5G wifi there's nothing like that.
I have other android phones and tablets that don't generate that on either wifi network.
I checked the phone settings and compared to a similar model and found nothing.

Searching online I found a similar thread https://github.com/openwrt/openwrt/issues/7888

I don't know if this could lead to a similar problem that might crash wifi...

Thank you and sorry for the long post.

4 Likes