Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
Why DSCP, switch QoS and Wi-Fi WMM don’t align — and how to build a consistent QoS model that actually works.
You set up QoS.
You mark traffic.
You expect voice to be prioritized, downloads to be deprioritized, and everything to “just work”.
But in reality?
Nothing lines up.
Your switch behaves one way. Your Wi-Fi behaves another. And your carefully marked packets seem to lose their priority somewhere in between.
This is not a bug.
It’s a mismatch of three different QoS systems.
Modern networks combine three separate QoS mechanisms:
Each one speaks a different “language”.
And Linux has to translate between them.
DSCP lives in the IP header.
It is supposed to represent the intent of the traffic:
It is end-to-end and survives routing.
But it does not directly control hardware queues.
Your switch does not understand “intent”.
It has:
Typically:
This mapping is often fixed or very limited.
So already:
DSCP ≠ queue
Wi-Fi does not use switch queues.
It uses WMM (Wi-Fi Multimedia):
Packets are mapped like this:
DSCP → UP (User Priority) → WMM Access Category
But this mapping is:
So again:
DSCP ≠ WMM (exactly)
At every boundary, something translates QoS:
These translations are:
This is why your priorities “don’t match”.
Modern routers rely heavily on:
These bypass parts of the Linux networking stack.
Which means:
You lose opportunities to “fix” QoS in software.
If the headers are wrong, the hardware will happily enforce the wrong priority — very efficiently.
Instead of trying to control everything, you need alignment.
A simple and effective model is:
This means:
Not perfect.
But consistent.
Instead of exposing dozens of QoS knobs, RouterWRT focuses on:
The goal is not to build the most complex QoS system.
It is to build one that actually works across:
Your QoS is not broken.
It is just speaking three different languages at the same time.
DSCP defines intent.
Switch hardware enforces queues.
Wi-Fi uses airtime-based prioritization.
And Linux sits in the middle, trying to translate between them.
Once you stop fighting that — and start aligning it — QoS suddenly becomes simple again.