Adding OpenWrt support for Xiaomi AX3600 (Part 1)

Just a in between feedback report:
I am using robimarko OpenWrt SNAPSHOT r0-d895504 / LuCI Master git-22.213.35850-abd9125 for over 3 days without any errors/crashes as dumb AP.
Free memory 176 on average.

1 Like

Was using robimarko Openwrt for over a week without any issues on Ax3600. Then had problem connecting to internet and then it crashed. While troubleshooting, I noticed that only one radio was listed under wireless (before crash there were three radio). Reinstalled the latest version (OpenWrt SNAPSHOT r17769+2597-333f93333e / LuCI Master git-22.213.35850-abd9125) and still can see only one radio. Any ideas?

I don't recognize that version, maybe your own build.

My suggestion is to install Robimarko latest build from here:
https://github.com/robimarko/openwrt/releases

After install, you will have this version (for 20/08/2022 build):
OpenWrt SNAPSHOT r0-095bed1 / LuCI Master git-22.213.35850-abd9125

If still, no radio, save you config and do a reset to defaults.

A logread would be also useful

May I ask for some testing of these RPS values:

For me they seem to reduce CPU load quite a bit

I want to include those as well as distribute ethernet IRQ-s for the PR.

This is with my own IRQ script just for reference:

DL, PPPoE 900Mbits:

image

UL, PPPoE, 320Mbits:

image

Let me test yours in a minute or two.

MOD:

With your IRQ mods enabled (mine is disabled, + SW offload + packet sterring):

DL PPPoE 910Mbits:

image

UL PPPoE, 320Mbits:

image

It seems the uplink is somewhat improved, but the diff is kinda small to tell for sure.

Only diff is the first two are with my IRQ mods, the last two are with yours. Rest is the same.

It doesn't seem to have much impact.

The thing is that linked modification already enables packet steering.
I am open to whatever is the most optimal default configuration, so people dont have to tweak it manually.

And I want to finally get us to the PR stage.

@robimarko can you help me with the nand sizes? I have some time to test if the router rejects the image

			partition@2de0000 {
				label = "rootfs";
				reg = <0x2de0000 0xcc20000>;
			};

with a 256mb nand what would be the real size?

It seems that your script does an equally good job as mine, that was the conclusion :slight_smile:

1 Like

Hmm, what do you mean?

the rootfs partition should be expanded to the end of the nand but the current size is not right and we have some free space at the end of the nand that is not assigned to rootfs partition. Wonder if you can help with the right value

Oh, that.
0x10000000 - 0x2de0000 = 0xD220000

I did I few WAN-LAN full duplex tests.
In my test scenario (FULL DUPLEX), I get random results, still I can't see any big measurable differences from those IRQ changes.


WAN-WiredLAN Full duplex test:
iperf3 -c 192.168.0.xxx --bidir -t 30
Your latest build r0-060646b.

-> Test #1:
GRO ON, Packet Steering ON, Software flow offloading ON, DCHARD-IRQ OFF, SNOW-IRQ OFF, WIFI OFF.

RUN#1:

[ ID][Role] Interval           Transfer     Bitrate         Retr
[  5][TX-C]   0.00-30.00  sec  3.20 GBytes   916 Mbits/sec    0             sender
[  5][TX-C]   0.00-30.00  sec  3.20 GBytes   915 Mbits/sec                  receiver
[  7][RX-C]   0.00-30.00  sec   603 MBytes   169 Mbits/sec  311             sender
[  7][RX-C]   0.00-30.00  sec   602 MBytes   168 Mbits/sec                  receiver

image

-> RUN#2:

[ ID][Role] Interval           Transfer     Bitrate         Retr
[  5][TX-C]   0.00-30.00  sec  3.16 GBytes   905 Mbits/sec  335             sender
[  5][TX-C]   0.00-30.00  sec  3.16 GBytes   904 Mbits/sec                  receiver
[  7][RX-C]   0.00-30.00  sec  1.96 GBytes   562 Mbits/sec  327             sender
[  7][RX-C]   0.00-30.00  sec  1.96 GBytes   561 Mbits/sec                  receiver

image

I've see this before, results are inconsistent between different runs for the same test conditions. It depends how the load is distributed.
I've posted the worst and the best test runs possible out of more than 10 runs.


-> Test #2:
GRO ON, Packet Steering ON, Software flow offloading ON, DCHARD-IRQ OFF, SNOW-IRQ ON, WIFI OFF.

Same results as Test#1, so I didn't copy past them here.
I can't see difference with SNOW-IRQ ON in this test scenario.


-> Test #3:
GRO ON, Packet Steering ON, Software flow offloading OFF, DCHARD-IRQ OFF, SNOW-IRQ OFF, WIFI OFF.
Full duplex results in different runs:
~400/600
~900/600
~900/600
~300/600
~800/300

-> Test #4:
GRO ON, Packet Steering ON, Software flow offloading OFF, DCHARD-IRQ OFF, SNOW-IRQ ON, WIFI OFF.
Full duplex results in different runs:
~900/750
~920/670
~920/220
~920/670

Too random results to make a conclusion.


Note: I can always get 930/930 max full-duplex wan-lan speed with these settings:
GRO OFF, Packet Steering ON, Software flow offloading ON.

2 Likes

@robimarko

WAN-LAN Full Duplex, in a test scenario with Packet Steering OFF, Software flow offloading OFF, the SNOW-IRQs help.
SNOW-IRQs OFF, I get around 900/130 Mbits in all 5 runs.
SNOW-IRQs ON, I get around 900/600 Mbits, but a few times I get much lower results like ~830/250 Mbits.


GRO ON, Packet Steering OFF, Software flow offloading OFF, DCHARD-IRQ OFF, WIFI OFF.

Test#1 - SNOW-IRQ OFF:
image

[ ID][Role] Interval           Transfer     Bitrate         Retr
[  5][TX-C]   0.00-30.00  sec  3.13 GBytes   897 Mbits/sec    0             sender
[  5][TX-C]   0.00-30.01  sec  3.13 GBytes   896 Mbits/sec                  receiver
[  7][RX-C]   0.00-30.00  sec   474 MBytes   133 Mbits/sec  499             sender
[  7][RX-C]   0.00-30.01  sec   474 MBytes   132 Mbits/sec                  receiver

I'm getting the same speed +-900/130 in different test runs.


Test#2 - SNOW-IRQ ON:
image

[ ID][Role] Interval           Transfer     Bitrate         Retr
[  5][TX-C]   0.00-30.00  sec  3.16 GBytes   904 Mbits/sec  334             sender
[  5][TX-C]   0.00-30.00  sec  3.16 GBytes   903 Mbits/sec                  receiver
[  7][RX-C]   0.00-30.00  sec  2.55 GBytes   730 Mbits/sec  276             sender
[  7][RX-C]   0.00-30.00  sec  2.55 GBytes   729 Mbits/sec                  receiver

RUN#2:

- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID][Role] Interval           Transfer     Bitrate         Retr
[  5][TX-C]   0.00-30.00  sec  3.13 GBytes   895 Mbits/sec  289             sender
[  5][TX-C]   0.00-30.00  sec  3.12 GBytes   894 Mbits/sec                  receiver
[  7][RX-C]   0.00-30.00  sec  2.16 GBytes   619 Mbits/sec  738             sender
[  7][RX-C]   0.00-30.00  sec  2.16 GBytes   618 Mbits/sec                  receiver

I get around 900/600 Mbits, but a few times I get much lower results like ~830/250 Mbits.

1 Like

I expect the results to be pretty much the same as its packet steering that brings the most improvement, as rxdesc IRQ will hammer whatever core it's set to, none of the other IRQ-s are anywhere near this one.

That is why we really need some more clues from QCA to get basic offloads and not just dump it all on the CPU.

6 Likes

Is there any plan for that?

What kind of plan are you expecting?

Only "documentation" is the driver itself and its lacking any of the HW details

Okay, I found this thread from last year[1] which says including bridge-mgr helped.
Why is this then still an issue now? Can someone enlighten me before I spend hours digging?

[1] Roaming Issues Xiaomi AX3600 - #84 by joba-1

By any chance, do you have "802.11r Fast Transition" enable?

I have an issue with two AX3600 configured as dumb APs.
When "802.11r Fast Transition" is enable and configured.
Randomly my xiaomi 9T pro phone, can't use internet. I need to turn wifi off/on in phone to work again.
Sometimes FT works for a few days, until one day I won't have internet (in my phone).
Don't know if it's my phone or else.
With FT disable, everything works 100% of time here.