SQM QoS limiting PS4 games console but nothing else

No devices were actually listed in nft-qos as you can see in the screenshot below. The global limits were enabled though to 50KBps which matches the limits I was getting on the PS4 of 5MBps (40Mbps).

This is still a problem. There is a 11GB update for the current Call of Duty video game and these large updates are a perfect way for me to test the download speeds coming into my PS4. I have replicated the problem three times back to back by simply unchecking/checking the Enable Enable this SQM instance checkbox.

I have issued the following command /etc/init.d/sqm stop ; /etc/init.d/sqm start

root@OpenWrt-AP1:~# /etc/init.d/sqm stop ; /etc/init.d/sqm start
SQM: Stopping SQM on eth0.6
SQM: Stopping SQM on pppoe-wan
SQM: Starting SQM script: piece_of_cake.qos on pppoe-wan, in: 300000 Kbps, out: 45000 Kbps
SQM: Using generic sqm_start_default function.
SQM: piece_of_cake.qos was started on pppoe-wan successfully
SQM: Starting SQM script: simplest.qos on eth0.6, in: 5000 Kbps, out: 10000 Kbps
SQM: Using generic sqm_start_default function.
SQM: get_burst (by duration): the calculated burst/quantum size of 1250 bytes was below the minimum of 1749 bytes.
SQM: get_burst (by duration): the calculated burst/quantum size of 1250 bytes was below the minimum of 1749 bytes.
SQM: get_burst (by duration): the calculated burst/quantum size of 625 bytes was below the minimum of 1749 bytes.
SQM: get_burst (by duration): the calculated burst/quantum size of 625 bytes was below the minimum of 1749 bytes.
SQM: simplest.qos was started on eth0.6 successfully

It seems the checkbox breaks sqm-qos because after running the command above my PS4's speeds are back to full.

For how long?

My PS4 speeds were hitting the mid 200Mbps range in the PS4's speed test. My router stays on overnight and this morning my PS4 is still achieving the same speeds.

You consider this to be full-speed, I assume?

So the issue arises, if and only if you disable/enable sqm from within the GUI? But manually doing essentially the same via /etc/init.d/sqm stop ; /etc/init.d/sqm start leaves you in a state where the PS4 stays fast? If you reboot the router, but never ever open the SQM page in the luci GUI, does the PS4 stay slow or fast?

On PS4?. The PS4 has a rough speedtest that's not 100% accurate but hitting the 250Mbps is a good guideline.

My router has been up for two days since I last posted and I haven't touched anything. Somehow SQM doesn't seem to be working now as my internet speeds are exceeding 300Mbps (the limit I set) and I should expect about 280Mbps download. Disabling the checkbox, clicking save & apply, then rechecking the checkbox, clicking save & apply and retesting a speedtest brings back to 280Mbps ~

The PS4 has full download speed, but SQM isn't doing anything as my wired PC still exceeds the 300Mbps limit.

This is really odd, last time you posted the output of tc -s qdisc immediately after/during after the slowdown, tc reported the shaper to be operational. I am running out of ideas here, but you could try instantiating SQM on eth1 without the vlan tag and see whether that gives more reliable results?

This is what is displayed on a SSH connection to the router after issuing the commands

root@OpenWrt-AP1:~# /etc/init.d/sqm stop ; /etc/init.d/sqm start
SQM: Stopping SQM on eth0.6
SQM: ifb associated with interface eth0.6: ifb4eth0.6
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc del dev eth0.6 ingress
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc del dev eth0.6 root
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc del dev ifb4eth0.6 root
SQM: /usr/lib/sqm/stop-sqm: ifb4eth0.6 shaper deleted
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev ifb4eth0.6 down
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link delete ifb4eth0.6 type ifb
SQM: /usr/lib/sqm/stop-sqm: ifb4eth0.6 interface deleted
SQM: Stopping SQM on eth1
SQM: ifb associated with interface eth1: ifb4eth1
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc del dev eth1 ingress
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc del dev eth1 root
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc del dev ifb4eth1 root
SQM: /usr/lib/sqm/stop-sqm: ifb4eth1 shaper deleted
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev ifb4eth1 down
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link delete ifb4eth1 type ifb
SQM: /usr/lib/sqm/stop-sqm: ifb4eth1 interface deleted
SQM: Starting SQM script: piece_of_cake.qos on eth1, in: 300000 Kbps, out: 45000 Kbps
SQM: fn_exists: function candidate name: sqm_start
SQM: fn_exists: TYPE_OUTPUT: sqm_start: not found
SQM: fn_exists: return value: 1
SQM: Using generic sqm_start_default function.
SQM: fn_exists: function candidate name: sqm_prepare_script
SQM: fn_exists: TYPE_OUTPUT: sqm_prepare_script is a function
SQM: fn_exists: return value: 0
SQM: sqm_start_default: starting sqm_prepare_script
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link add name TMP_IFB_4_SQM type ifb
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc replace dev TMP_IFB_4_SQM root cake
SQM: QDISC cake is useable.
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev TMP_IFB_4_SQM down
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link delete TMP_IFB_4_SQM type ifb
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link add name TMP_IFB_4_SQM type ifb
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc replace dev TMP_IFB_4_SQM root cake
SQM: QDISC cake is useable.
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev TMP_IFB_4_SQM down
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link delete TMP_IFB_4_SQM type ifb
SQM: sqm_start_default: Starting piece_of_cake.qos
SQM: ifb associated with interface eth1:
SQM: Currently no ifb is associated with eth1, this is normal during starting of the sqm system.
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link add name ifb4eth1 type ifb
SQM: fn_exists: function candidate name: egress
SQM: fn_exists: TYPE_OUTPUT: egress is a function
SQM: fn_exists: return value: 0
SQM: egress
SQM: cmd_wrapper: tc: invocation silenced by request, FAILURE either expected or acceptable.
SQM: cmd_wrapper: tc: FAILURE (2): /usr/sbin/tc qdisc del dev eth1 root
SQM: cmd_wrapper: tc: LAST ERROR: RTNETLINK answers: No such file or directory
SQM: LLA: default link layer adjustment method for cake is cake
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc add dev eth1 root cake bandwidth 45000kbit besteffort
SQM: sqm_start_default: egress shaping activated
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link add name TMP_IFB_4_SQM type ifb
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc replace dev TMP_IFB_4_SQM ingress
SQM: QDISC ingress is useable.
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev TMP_IFB_4_SQM down
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link delete TMP_IFB_4_SQM type ifb
SQM: fn_exists: function candidate name: ingress
SQM: fn_exists: TYPE_OUTPUT: ingress is a function
SQM: fn_exists: return value: 0
SQM: ingress
SQM: cmd_wrapper: tc: invocation silenced by request, FAILURE either expected or acceptable.
SQM: cmd_wrapper: tc: FAILURE (2): /usr/sbin/tc qdisc del dev eth1 handle ffff: ingress
SQM: cmd_wrapper: tc: LAST ERROR: RTNETLINK answers: Invalid argument
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc add dev eth1 handle ffff: ingress
SQM: cmd_wrapper: tc: invocation silenced by request, FAILURE either expected or acceptable.
SQM: cmd_wrapper: tc: FAILURE (2): /usr/sbin/tc qdisc del dev ifb4eth1 root
SQM: cmd_wrapper: tc: LAST ERROR: RTNETLINK answers: No such file or directory
SQM: LLA: default link layer adjustment method for cake is cake
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc add dev ifb4eth1 root cake bandwidth 300000kbit besteffort wash
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev ifb4eth1 up
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc filter add dev eth1 parent ffff: protocol all prio 10 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb4eth1
SQM: sqm_start_default: ingress shaping activated
SQM: piece_of_cake.qos was started on eth1 successfully
SQM: Starting SQM script: simplest.qos on eth0.6, in: 5000 Kbps, out: 10000 Kbps
SQM: fn_exists: function candidate name: sqm_start
SQM: fn_exists: TYPE_OUTPUT: sqm_start: not found
SQM: fn_exists: return value: 1
SQM: Using generic sqm_start_default function.
SQM: fn_exists: function candidate name: sqm_prepare_script
SQM: fn_exists: TYPE_OUTPUT: sqm_prepare_script is a function
SQM: fn_exists: return value: 0
SQM: sqm_start_default: starting sqm_prepare_script
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link add name TMP_IFB_4_SQM type ifb
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc replace dev TMP_IFB_4_SQM root htb
SQM: QDISC htb is useable.
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev TMP_IFB_4_SQM down
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link delete TMP_IFB_4_SQM type ifb
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link add name TMP_IFB_4_SQM type ifb
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc replace dev TMP_IFB_4_SQM root cake
SQM: QDISC cake is useable.
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev TMP_IFB_4_SQM down
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link delete TMP_IFB_4_SQM type ifb
SQM: sqm_start_default: Starting simplest.qos
SQM: ifb associated with interface eth0.6:
SQM: Currently no ifb is associated with eth0.6, this is normal during starting of the sqm system.
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link add name ifb4eth0.6 type ifb
SQM: fn_exists: function candidate name: egress
SQM: fn_exists: TYPE_OUTPUT: egress is a function
SQM: fn_exists: return value: 0
SQM: IFACE: eth0.6 MTU: 1500
SQM: get_htb_quantum: 1: eth0.6, 2: 10000, 3: 1000
SQM: get_burst: 1: 1500, 2: 10000, 3: 1000
SQM: get_burst (by duration): the calculated burst/quantum size of 1250 bytes was below the minimum of 1749 bytes.
SQM: get_burst (by duration): BURST [Byte]: 1749, BANDWIDTH [Kbps]: 10000, DURATION [us]: 1000
SQM: IFACE: eth0.6 MTU: 1500
SQM: get_htb_burst: 1: eth0.6, 2: 10000, 3: 1000
SQM: get_burst: 1: 1500, 2: 10000, 3: 1000
SQM: get_burst (by duration): the calculated burst/quantum size of 1250 bytes was below the minimum of 1749 bytes.
SQM: get_burst (by duration): BURST [Byte]: 1749, BANDWIDTH [Kbps]: 10000, DURATION [us]: 1000
SQM: cmd_wrapper: tc: invocation silenced by request, FAILURE either expected or acceptable.
SQM: cmd_wrapper: tc: FAILURE (2): /usr/sbin/tc qdisc del dev eth0.6 root
SQM: cmd_wrapper: tc: LAST ERROR: RTNETLINK answers: No such file or directory
SQM: LLA: default link layer adjustment method for cake is cake
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc add dev eth0.6 root cake bandwidth 10000kbit besteffort
SQM: sqm_start_default: egress shaping activated
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link add name TMP_IFB_4_SQM type ifb
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc replace dev TMP_IFB_4_SQM ingress
SQM: QDISC ingress is useable.
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev TMP_IFB_4_SQM down
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link delete TMP_IFB_4_SQM type ifb
SQM: fn_exists: function candidate name: ingress
SQM: fn_exists: TYPE_OUTPUT: ingress is a function
SQM: fn_exists: return value: 0
SQM: ingress
SQM: cmd_wrapper: tc: invocation silenced by request, FAILURE either expected or acceptable.
SQM: cmd_wrapper: tc: FAILURE (2): /usr/sbin/tc qdisc del dev eth0.6 handle ffff: ingress
SQM: cmd_wrapper: tc: LAST ERROR: RTNETLINK answers: Invalid argument
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc add dev eth0.6 handle ffff: ingress
SQM: IFACE: eth0.6 MTU: 1500
SQM: get_htb_quantum: 1: eth0.6, 2: 5000, 3: 1000
SQM: get_burst: 1: 1500, 2: 5000, 3: 1000
SQM: get_burst (by duration): the calculated burst/quantum size of 625 bytes was below the minimum of 1749 bytes.
SQM: get_burst (by duration): BURST [Byte]: 1749, BANDWIDTH [Kbps]: 5000, DURATION [us]: 1000
SQM: IFACE: eth0.6 MTU: 1500
SQM: get_htb_burst: 1: eth0.6, 2: 5000, 3: 1000
SQM: get_burst: 1: 1500, 2: 5000, 3: 1000
SQM: get_burst (by duration): the calculated burst/quantum size of 625 bytes was below the minimum of 1749 bytes.
SQM: get_burst (by duration): BURST [Byte]: 1749, BANDWIDTH [Kbps]: 5000, DURATION [us]: 1000
SQM: cmd_wrapper: tc: invocation silenced by request, FAILURE either expected or acceptable.
SQM: cmd_wrapper: tc: FAILURE (2): /usr/sbin/tc qdisc del dev ifb4eth0.6 root
SQM: cmd_wrapper: tc: LAST ERROR: RTNETLINK answers: No such file or directory
SQM: LLA: default link layer adjustment method for cake is cake
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc qdisc add dev ifb4eth0.6 root cake bandwidth 5000kbit besteffort
SQM: cmd_wrapper: ip: SUCCESS: /sbin/ip link set dev ifb4eth0.6 up
SQM: cmd_wrapper: tc: SUCCESS: /usr/sbin/tc filter add dev eth0.6 parent ffff: protocol all prio 10 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb4eth0.6
SQM: sqm_start_default: ingress shaping activated
SQM: simplest.qos was started on eth0.6 successfully

Okay I've done some more reading through Google trying to find why the PS4 downloads are slow and there are some stories on the internet saying they've noticed it too. That rules out SQM being the problem for slowing down my connection.

However, using VLAN interfaces (eth0.* or eth1.* etc) with SQM and powering off the router and back on doesn't stick. My guest network is eth0.6 and it's bridge interface is br-guest. The network speed limits I have set on the guest interface works on the bridged interface after the router has been completely turned off and back on, but not the VLAN. Rather carrying on and diagnosing the problem on here which I don't mind doing, would it be better if I open a bug ticket?

Mmmh, so sqm uses hotplug scripts to try to monitor interfaces when they come and go, maybe our script does not trigger for VLAN changes at all?