[Make-wifi-fast] [RFC/RFT] mac80211: Switch to a virtual time-based airtime scheduler
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
>> 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
>> 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
>> to maintain an rbtree of TXQs sorted by virtual time. This means that
>> ieee80211_register_airtime() becomes O(logN) in the number of
>> scheduled TXQs. However, hopefully this number rarely grows too big
>> 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
>> test it on your ath10k setup, Rajkumar; and all of you please comment
>> 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
Have you used *Wrt image or validation on x86?
More information about the Make-wifi-fast