[Make-wifi-fast] [RFC/RFT] mac80211: Switch to a virtual time-based airtime scheduler

Rajkumar Manoharan rmanohar at codeaurora.org
Wed Mar 6 18:09:58 EST 2019

On 2019-03-05 07:45, Toke Høiland-Jørgensen wrote:
> Toke Høiland-Jørgensen <toke at redhat.com> writes:
>> This switches the airtime scheduler in mac80211 to use a virtual 
>> time-based
>> scheduler instead of the round-robin scheduler used before. This has a
>> couple of advantages:
>> - No need to sync up the round-robin scheduler in firmware/hardware 
>> with
>>   the round-robin airtime scheduler.
>> - If several stations are eligible for transmission we can schedule 
>> both of
>>   them; no need to hard-block the scheduling rotation until the head 
>> of the
>>   queue has used up its quantum.
>> - The check of whether a station is eligible for transmission becomes
>>   simpler (in ieee80211_txq_may_transmit()).
>> The drawback is that scheduling becomes slightly more expensive, as we 
>> need
>> to maintain an rbtree of TXQs sorted by virtual time. This means that
>> ieee80211_register_airtime() becomes O(logN) in the number of 
>> currently
>> scheduled TXQs. However, hopefully this number rarely grows too big 
>> (it's
>> only TXQs currently backlogged, not all associated stations), so it
>> shouldn't be too big of an issue.
>> Signed-off-by: Toke Høiland-Jørgensen <toke at redhat.com>
>> ---
>> This is basically the idea I mentioned earlier for a different way to
>> handle the airtime scheduling.
>> I've tested it on ath9k, where it achieves the same fairness and
>> weighing properties as the old scheduler. It would be good if you 
>> could
>> test it on your ath10k setup, Rajkumar; and all of you please comment 
>> on
>> whether you agree that this is better from an API point of view.
> So no one has any comments on this? :)

This is kind of design change. ;) FMU w.r.t ath10k, earlier deficit 
and list rotation happens at next_txq and may_transmit. Now it seems the 
adjustment happens upon new txq insertion through wake_txq and whenever 
reports airtime by register_airtime. Am I right?

We are using pretty old kernel (3.14, 4.4). It definitely needs backport 
of rbtree.
Have you used *Wrt image or validation on x86?


More information about the Make-wifi-fast mailing list