Hi,
after doing some tests with different ath10k Wi-Fi cards and clients, I found the following behaviour when combining AQL and the airtime scheduler:
- When using the default AQL limits (threshold 24000, limits per AC 5000/12000), the airtime scheduler is not working at all, regardless of the airtime weights of the STAs. Indeed, in some cases, slower stations were able to use a higher amount of airtime, leading to unfairness. I was thinking that maybe the default AQL limits are too high to these slow stations, allowing them to obtain too much pending airtime. I already used the last patches from Felix Fietkau with the same results.
- Indeed, I was able to activate the airtime scheduler by fixing lower AQL limits (e.g. threshold of 5000, limits per AC 0/5000). This way, it seems that the STAs start competing again for the airtime, and their behaviour follows the airtime weights. However, slower STAs lose a bit of performance due to these lower limits.
- The airtime weights have to be higher (e.g. 10000 vs 20000 to obtain a 33% vs 66% relation); I found the same behaviour using ath9k and 11n cards, so I guess this is due to the aggregation of packets.
Looking into the code, it seems that the key airtime check is the one in ieee80211_tx_dequeue. To enable the airtime scheduling, the "ieee80211_txq_airtime_check" function has to return false more usually; maybe it is just a matter of adjusting the AQL limits according to the airtime weights or to modify a bit the "ieee80211_txq_airtime_check" function to consider the airtime weight or the deficit of the stations.
Cheers,
Miguel.