Belkin RT3200/Linksys E8450 - AQL and WiFi Latency

I'm kicking off this topic specifically for discussion around AQL and other wireless latency points. This is not meant to be another topic for discussing SQM on the ethernet side of the device.

Having been inspired by this, myself, I wonder if I might entice anyone to join with me in experimenting a little. I interested to see if anyone is willing to run the following and do some buffer bloat tests (of your choosing).

For 2.4ghz radio:

22.03.x: for ac in 0 1 2 3; do echo $ac 1500 1500 > /sys/kernel/debug/ieee80211/phy0/aql_txq_limit; done

Snapshot: for ac in 0 1 2 3; do echo $ac 1500 1500 > /sys/kernel/debug/ieee80211/wl0/aql_txq_limit; done

For 5ghz radio:

22.03.x: for ac in 0 1 2 3; do echo $ac 1500 1500 > /sys/kernel/debug/ieee80211/phy1/aql_txq_limit; done

Snapshot: for ac in 0 1 2 3; do echo $ac 1500 1500 > /sys/kernel/debug/ieee80211/wl1/aql_txq_limit; done

You can confirm the settings applied by checking the following:

For 22.03.x: cat /sys/kernel/debug/ieee80211/phy*/aql_txq_limit
For Snapshot: cat /sys/kernel/debug/ieee80211/wl*/aql_txq_limit

It should look something like this:

root@AP:~# cat /sys/kernel/debug/ieee80211/wl*/aql_txq_limit
AC	AQL limit low	AQL limit high
VO	1500		1500
VI	1500		1500
BE	1500		1500
BK	1500		1500
AC	AQL limit low	AQL limit high
VO	1500		1500
VI	1500		1500
BE	1500		1500
BK	1500		1500

If you do test, some before and after buffer bloat results would be most interesting. Thanks!

I'm sure @dtaht will be interested in joining in here, as well. :slight_smile:


Update 05/14/2024:
@tohojo Provides a great explanation of these settings here:

Soapbox moment... it's generally believed that "fast" WiFi means "high bandwidth". Every wireless device maker proves this by advertising fancy model names with BIG numbers (e.g. AX3200 or AX11000) that people will think are impressive. Yet, how many of them publish latency reduction (AQL, BQL, Airtime Fairness, etc.) figures?

The majority of consumers don't realize that the "fast" they feel is more a product of lower latency than higher bandwidth. That's my ultimate hope of this thread, and the numerous other threads like this one. Just want to help people FEEL the difference for themselves and start demanding better of manufacturers.

2 Likes

Here's a result from an AX client with the settings above:

With the aql_txq_limit adjusted per my OP and my STA target and interval set at 8ms and 80ms, respectively, I am seeing a tighter control on some of my max latency:

Here is the patch I'm running presently on my snapshot build:

If you wish to test as well, place the patch file here:
package/kernel/mac80211/patches/subsys/982-codel-target.patch

You can confirm the patch is working in your build by checking for "Codel" in your kernel log:

root@AP:~# dmesg | grep Codel | tail -n5
[135091.555225] Codel target, interval 7812, 78125
[135195.713857] Codel target, interval 7812, 78125
[135196.053848] Codel target, interval 7812, 78125
[135338.425862] Codel target, interval 7812, 78125
[135360.191737] Codel target, interval 7812, 78125

hi I have a belkin and fiber optic you get A+ and these speeds in fiber optic wifi 6 or 5 ?

or ethernet ? thanks

in startup just i can tst if you want but my pc has only wifi 5

My feedback so far is from a WiFi 6 STA (this thread is specifically for wireless), and I do have a 1Gb symmetric WAN.

1 Like

yes i has wan too 1000 and 1000 but my laptop has chipset wireless 5 not 6

Yes, please test! The point of this thread is not to see if we can hit new throughput records. The goal is to see what levels of wireless latency reduction we can achieve while not completely starving throughput.

2 Likes

ok i will test i put your values in startup is right

on system local startup ?

It's fine to add them into your rc.local file, but you can also run them straight from your router/AP's command line and the changes take effect immediately (no reboot required). Either way you are comfortable is fine :slight_smile:

1 Like

ah do you mean that I put the router in ad hoc mode and not access point?

first test 2.4 https://www.waveform.com/tools/bufferbloat?test-id=b9740cbb-a93e-4fe7-816c-65177abbb0e1

second test AX https://www.waveform.com/tools/bufferbloat?test-id=672c8635-c201-4f6f-b6a0-cecab7c1c479 always on access point

No no, sorry. I updated my previous post to clarify - "you can also run them straight from your router/AP's command line"

1 Like

How does this upload latency from your tests compare to your upload latency from a wired host on your network? The reason I ask is that I don't want to falsely attribute these changes to "bad wireless latency" when there might be other latency issues, even for wired clients, going on in the first place.

1 Like
root@OpenWrt:~# for ac in 0 1 2 3; do echo $ac 1500 1500 > /sys/kernel/debug/ieee80211/wl0/aql_txq_limit; done
-ash: can't create /sys/kernel/debug/ieee80211/wl0/aql_txq_limit: nonexistent directory
-ash: can't create /sys/kernel/debug/ieee80211/wl0/aql_txq_limit: nonexistent directory
-ash: can't create /sys/kernel/debug/ieee80211/wl0/aql_txq_limit: nonexistent directory
-ash: can't create /sys/kernel/debug/ieee80211/wl0/aql_txq_limit: nonexistent directory
root@OpenWrt:~#
root@OpenWrt:~# ###Pour la radio 5 ghz :
root@OpenWrt:~#
root@OpenWrt:~# for ac in 0 1 2 3; do echo $ac 1500 1500 > /sys/kernel/debug/ieee80211/wl1/aql_txq_limit; done
-ash: can't create /sys/kernel/debug/ieee80211/wl1/aql_txq_limit: nonexistent directory
-ash: can't create /sys/kernel/debug/ieee80211/wl1/aql_txq_limit: nonexistent directory
-ash: can't create /sys/kernel/debug/ieee80211/wl1/aql_txq_limit: nonexistent directory
-ash: can't create /sys/kernel/debug/ieee80211/wl1/aql_txq_limit: nonexistent directory
root@OpenWrt:~#

i should be maybe download a package ?

Alright, let's step back a bit here. You have a Belkin RT3200, yes? If so, are you running snapshot or 22.03?

yes i have belkin rt3200 on 22.03.3

my resultat wired https://www.waveform.com/tools/bufferbloat?test-id=cff5a374-b595-489f-b583-1a617d86839b

Can you paste the output of this for me?

ls -la /sys/kernel/debug/ieee80211/

1 Like
root@OpenWrt:~# ls -la /sys/kernel/debug/ieee80211/
drwxr-xr-x    4 root     root             0 Mar 30 20:25 .
drwx------   28 root     root             0 Jan  1  1970 ..
drwxr-xr-x    7 root     root             0 Mar 31 18:54 phy0
drwxr-xr-x    6 root     root             0 Mar 31 18:54 phy1
root@OpenWrt:~#

Okay thanks. Can you try this instead and paste the output for me?

for ac in 0 1 2 3; do echo $ac 1500 1500 > /sys/kernel/debug/ieee80211/phy0/aql_txq_limit; done

for ac in 0 1 2 3; do echo $ac 1500 1500 > /sys/kernel/debug/ieee80211/phy1/aql_txq_limit; done

1 Like