ECN - Explicit Congestion Notification. It's a way of telling a sender to slow down tcp transmission instead of dropping packets. It should be on by default. See ECN
SQM is optional and enabled only in one direction by default. What I'm talking about is a kernel system-wide toggle net.ipv4.tcp_ecn which is set to 2 by default for MANY years. Scenario described in OpenWrt documentation (linked above in original post) doesn't work in current stable. Looks like a bug to me.
Yep, this is what I do (echo 'net.ipv4.tcp_ecn=1' > /etc/sysctl.d/20-tcp-ecn.conf) at least for two major releases because documented option doesn't work. I'm just sorting out my old tweaks by asking if those still needed
By setting the sysctl, but be aware this only affects TCP traffic that initiated or ends on your router, ECN negotiation is end to end, so this will not affect the ECN-ness of routed traffic....
SQM is optional, and even if installed by default not enabled at all as it needs to be properly configured before it can work as expected. In SQM with fq_codel as qdisc we default to ECN on for ingress traffic and ECN off for egress traffic, cake will silently ignore that setting and always use ECN for any direction.
The rationale for the original setting is that in early days of SQM when access capacity was measured in from below single to low double digit Mbps values, we wanted to not throw away packets in ingress as these has already passed the bottleneck and hence dropping these would waste essentially almost done throughput components. In egress direction the packets will not have passed the bottleneck yet, so by dropping them we could use the same transmit slot for a packet from a flow not already above capacity share. But this rationale might not be as convincing anymore given that access rates increased considerably....
Why either or? If you can fox OpenWrt itself, great, but until then at least mentioning that in the wiki would have helped your curiosity, so it might help others as well, no?
You can also put your changes into /etc/sysctl.conf to have them persist, if you add this file to the set conserved over upgrades you might not need to redo this manually...