(Solved) Slow WiFi upload speeds with WMM enabled

I've installed OpenWRT 18.06.1 on a freshly bought Linksys WRT1900ACS a few hours ago. So far I'm having issues with WiFi. Here's what happens:

On both 2.4 and 5GHz, download speeds are as expected, but upload speeds get capped at around 2 Mbps. However, if I disable WMM, download speeds go down (expected) and upload speeds go up. Over ethernet I always get the expected speeds.

Some example numbers, from speedtest.net, with my laptop (a 2015 MacBook Pro) right in front of the router:

  • WMM enabled: ~120 Mbps down / ~2 Mbps up
  • WMM disabled: ~20 Mbps down / ~10 Mbps up

My internet connection is capped at 120 Mbps down / 10 Mbps up, which is what I see if connected to an ethernet port on the router.

With WMM enabled my mac is connecting at 600 Mbps, and with WMM disabled it's connecting at 54 Mbps, both as expected.

Now for something weirder: using iperf I get around 450 Mbps both ways.

With my older Linksys E3200 (running the stock firmware) I have none of these issues.

Any ideas?

EDIT (November 25, 2018): The fix for this turned out to be enabling QoS/SQM. Capping the connection to the ISP-advertised speeds was enough, no need to take a few percent off as recommended in the wiki (although, to minimize bufferbloat, I've since done that).

I'm still struggling to understand what was happening, especially as to why only wireless clients are affected, but definitely my ISP-provided router is (was) also conditioning traffic and that's critical somehow.

Sorry to say this but no surprise for me, I will give you an example on my ex 3700 wireless repeater on openwrt I get maximum 10 mbit upload on 2,4 GHz but on stock firmware that value sky rockets to a whooping 40 mbits, somehow and I can't conclude because I'm as you a newbie, but on opwnwrt on 2,4 GHz is somehow slower than it should be, on the 5ghz on the other hand works flawlessly, I connect to my main router via lan and was getting 80 mbits download on a 100 mbits main router, but my laptop neck to neck to my repeater maximum 10 mbits on 2,4 GHz it doesn't make any sense.

Back off to at least 3 meters/yards / 10ft being right on top of a radio device can cause over modulation and signal problems. Just rule out that issue first.

As for WMM or not, is the traffic DSCP tagged? How about speeds between wireless LAN and wired LAN?

Testing farther away from the router has the same results, however...

  • If instead of connecting directly to the Internet, I instead connect via a NAT port on my ISP-provided router [1], I get the expected upload speeds over wireless even with WMM enabled.
  • If I connect via a NAT port on my old E3200 router [1], then I get slow uploads with WMM enabled.
  • From the wired LAN the results are as expected in every case.

As for DSCP, I don't see any difference between either cases. Most packets have the IP ToS field at 0, and some have 8 (ACKs, FINs, small packets like that). I'm using the following command (on the router):

tcpdump -nlv -i wlan0 'not port 22 and ip[1] != 0'

Whatever is triggering WMM here (if that's what's happening), my ISP's router strips it out when doing NAT, and both my old and new routers don't.

[1] My ISP provides a cable modem/router where one of the ports is actually just a bridge to the public network (effectively bypassing the router part), while the other ports have NAT on them. I use this bridge port to connect either my old E3200 router or my new WRT1900ACS router when I mean "directly to the Internet".

this could cause problems. ip TOS=8 is DSCP CS1 which is considered "background" or lowest priority by most schemes. It will go in WMM background queue. Now, TCP could stall waiting for acks due to that.

I've been comparing packet captures both from fast and slow streams (as defined above, depending on where the router's WAN port is connected) and I can't see any relevant difference.

VLAN priority fields are the same, so are DSCP fields in IP packets.

The following diagram shows the scenarios I've tried so far, and the respective results, in case someone has some insight on what my ISP-provided router may be doing to the traffic that affects whatever WMM does.