SQM causes Wi-Fi clients to lose internet access (LAN works fine)

Hi all,

I’m running into a strange issue with SQM and can’t figure out what’s wrong.

Setup:

ISP: 1 Gbps / 100 Mbps fiber
Hardware: Nokia ONT (from ISP) → Cat6e → GL.iNet Flint 3 router (PPPoE)
LAN: 10.0.0.0/24, no VLANs (wired and wireless devices are in the same subnet)

What works:

SQM off → everything works normally (LAN + Wi-Fi).
SQM on → LAN devices work perfectly, performance improves as expected.
Wi-Fi clients connect fine and get IPs from DHCP.
Wi-Fi clients can reach LAN devices (e.g. Android phone can ping my PC).
DNS resolution works (AdGuard Home responds to queries from Wi-Fi devices).

What doesn’t work (with SQM enabled):

When opening a browser on a Wi-Fi client and trying to load a website (e.g. google.com), the request hangs and no response comes back.
Disabling SQM immediately fixes the issue.

config queue
	option enabled '1'
	option interface 'eth0'   # WAN port connected to the Nokia ONT
	option download '870000'
	option upload '95000'
	option debug_logging '0'
	option verbosity '5'
	option qdisc 'cake'
	option script 'piece_of_cake.qos'
	option linklayer 'none'

Has anyone seen something like this before? Could it be related to the PPPoE setup, the Flint 3 hardware, or a misconfigured SQM interface?

Any pointers would be much appreciated.

Ask GL.iNet, not us.


It appears you are using firmware that is not from the official OpenWrt project.

When using forks/offshoots/vendor-specific builds that are "based on OpenWrt", there may be many differences compared to the official versions (hosted by OpenWrt.org). Some of these customizations may fundamentally change the way that OpenWrt works. You might need help from people with specific/specialized knowledge about the firmware you are using, so it is possible that advice you get here may not be useful.

You may find that the best options are:

  1. Install an official version of OpenWrt, if your device is supported (see https://firmware-selector.openwrt.org).
  2. Ask for help from the maintainer(s) or user community of the specific firmware that you are using.
  3. Provide the source code for the firmware so that users on this forum can understand how your firmware works (OpenWrt forum users are volunteers, so somebody might look at the code if they have time and are interested in your issue).

If you believe that this specific issue is common to generic/official OpenWrt and/or the maintainers of your build have indicated as such, please feel free to clarify.

2 Likes

While @frollic might be right and the issue coming from gl-inet's special sauce, I would like to see the output of:

ifstatus wan | grep device
tc -s qdisc

@moeller0 Could be the same or something similar as discussed here:

1 Like

Yes, good point, well possible that the ingress ifb does not take hold. I hope to switch to a OpenWrt24 based release on my router soon, then I can try to explore the options, at the very least SQM-scripts should give a verbose, preferably actionable, error message for this case.

Mind you, I hope that tc -s qdisc might show something here...

Here is the output.

root@GL-BE9300:~# ifstatus wan | grep device
"l3_device": "pppoe-wan",
"device": "eth0"

root@GL-BE9300:~# tc -s qdisc
qdisc noqueue 0: dev lo root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc cake 8008: dev eth0 root refcnt 5 bandwidth 95Mbit besteffort triple-isolate nonat nowash no-ack-filter split-gso rtt 100ms raw overhead 0
Sent 38106 bytes 176 pkt (dropped 0, overlimits 55 requeues 0)
backlog 0b 0p requeues 0
memory used: 11776b of 4750000b
capacity estimate: 95Mbit
min/max network layer size: 50 / 1454
min/max overhead-adjusted size: 50 / 1454
average network hdr offset: 7

              Tin 0

thresh 95Mbit
target 5ms
interval 100ms
pk_delay 113us
av_delay 5us
sp_delay 2us
backlog 0b
pkts 176
bytes 38106
way_inds 0
way_miss 29
way_cols 0
drops 0
marks 0
ack_drop 0
sp_flows 8
bk_flows 1
un_flows 0
max_len 1454
quantum 1514

qdisc ingress ffff: dev eth0 parent ffff:fff1 ----------------
Sent 73669 bytes 187 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev eth1 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev wifi0 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev br-lan root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev eth1.1 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev mld0 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev wlan0 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev pppoe-wan root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev wifi1 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev wifi2 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev wlan02 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev wlan1 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev wlan2 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev wlan12 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev wlan22 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc cake 8009: dev ifb4eth0 root refcnt 2 bandwidth 860Mbit besteffort triple-isolate nonat wash no-ack-filter split-gso rtt 100ms raw overhead 0
Sent 76287 bytes 187 pkt (dropped 0, overlimits 60 requeues 0)
backlog 0b 0p requeues 0
memory used: 8832b of 15140Kb
capacity estimate: 860Mbit
min/max network layer size: 60 / 1514
min/max overhead-adjusted size: 60 / 1514
average network hdr offset: 7

              Tin 0

thresh 860Mbit
target 5ms
interval 100ms
pk_delay 19us
av_delay 3us
sp_delay 2us
backlog 0b
pkts 187
bytes 76287
way_inds 0
way_miss 30
way_cols 0
drops 0
marks 0
ack_drop 0
sp_flows 6
bk_flows 1
un_flows 0
max_len 1514
quantum 1514

To be clear, I have the same issue if pppoe-wan configured as option interface in the sqm.

1 Like

Thanks so SQM does actually work, but only from LAN, but in capacity test you get the expected numbers? around 870/95?

Then this looks indeed more like a gli-net case than a normal sqm issue... if I had to bet, I would guess that there is some special accelerator in use (e.g. between WiFi and Ethernet) that is not fully compatible with sqm-scripts.

SpeedTest from my pc show 930/103 without sqm and 870/95 with sqm.
I can’t do the test from wifi when sqm is enabled…

Somewhat hard to believe, as speedtests typically only report TCP/IP goodput
with the shaper set to 860/95 Mbps I would expect at best:

95 * ((1500-8-20-20)/(1500+14)) = 91.11 Mbps
860 * ((1500-8-20-20)/(1500+14)) = 824.78 Mbps

But maybe you were just reporting whether the expected rates from memory were achieved and not the actual results from the tests?

I tested it again after rebooting the router, now i get 818/92 (with sqm enabled)

That is more like it :slight_smile:
I note that most speedtests are somewhat inclined to report overly large numbers and typically screw up properly accounting for the true throughput of several parallel flows especially they do not take retransmissions into account. The result of that is that the true measurement windows as taken by the speed test do not match the actual time window for the received data. The test then reports the maximum (or a similar optimistic statistic) over all its arbitrary measurement windows, which is technically not completely incorrect, but it does not really report the true sustained rate a link is capable of, but a somewhat inflated correlate of that.
Anyway, in light of that getting 818/93 of 824/91 seems sort of in the right ballpark.

That confirms that sqm works for LAN, but says little for WiFi.

GL.iNet has confirmed that this is a known conflict:

“This SQM conflict is caused by hardware acceleration. Please confirm that hardware acceleration is disabled.”

After disabling hardware acceleration, Wi-Fi clients regained internet access. However, with SQM enabled, my speed tests now drop to around 350–500 download and 80–90 upload.

I’ll try tweaking SQM settings.

I would try to enable irqbalance and receive packet steering (likely on all CPUs), this might simply be a case of overloaded CPU once the accelerators are not helping any more.

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.