A few notes on your questions in the original post:
- Cake first appeared in 2015, according to the commit log and copyright notices in the out-of-tree repo. It was upstreamed in 2018.
- The driver can be queried for support through
iw list
- look forTXQS
,AIRTIME_FAIRNESS
andAQL
in the "Supported extended features" list at the end of the output for a given phy device. - The AQL limits can be tuned through debugfs:
cat /sys/kernel/debug/ieee80211/phy0/aql_txq_limit
AC AQL limit low AQL limit high
VO 5000 12000
VI 5000 12000
BE 5000 12000
BK 5000 12000
The values are in microseconds and can be written to using a "x y z" format, where x is the AC number (0-3), and y and z are the low and high limits. The high limit is used as a per-station limit if the total outstanding airtime for the interface is below the aql_threshold
(tuned by the file of that name in the same directory, default 24ms), and the low limit is used once the limit goes over. So basically, the first two stations queueing can get 12ms each, and after that, each station is capped at 5ms (or some other combination that adds up to 24ms total).