• Toke Høiland-Jørgensen's avatar
    mac80211: Add airtime accounting and scheduling to TXQs · b4809e94
    Toke Høiland-Jørgensen authored
    This adds airtime accounting and scheduling to the mac80211 TXQ
    scheduler. A new callback, ieee80211_sta_register_airtime(), is added
    that drivers can call to report airtime usage for stations.
    
    When airtime information is present, mac80211 will schedule TXQs
    (through ieee80211_next_txq()) in a way that enforces airtime fairness
    between active stations. This scheduling works the same way as the ath9k
    in-driver airtime fairness scheduling. If no airtime usage is reported
    by the driver, the scheduler will default to round-robin scheduling.
    
    For drivers that don't control TXQ scheduling in software, a new API
    function, ieee80211_txq_may_transmit(), is added which the driver can use
    to check if the TXQ is eligible for transmission, or should be throttled to
    enforce fairness. Calls to this function must also be enclosed in
    ieee80211_txq_schedule_{start,end}() calls to ensure proper locking.
    
    The API ieee80211_txq_may_transmit() also ensures that TXQ list will be
    aligned aginst driver's own round-robin scheduler list. i.e it rotates
    the TXQ list till it makes the requested node becomes the first entry
    in TXQ list. Thus both the TXQ list and driver's list are in sync.
    Co-developed-by: default avatarRajkumar Manoharan <rmanohar@codeaurora.org>
    Signed-off-by: default avatarLouie Lu <git@louie.lu>
    [added debugfs write op to reset airtime counter]
    Signed-off-by: default avatarToke Høiland-Jørgensen <toke@toke.dk>
    Signed-off-by: default avatarRajkumar Manoharan <rmanohar@codeaurora.org>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    b4809e94
ieee80211_i.h 70.1 KB