• Toke Høiland-Jørgensen's avatar
    mac80211: Use Airtime-based Queue Limits (AQL) on packet dequeue · 7a89233a
    Toke Høiland-Jørgensen authored
    The previous commit added the ability to throttle stations when they queue
    too much airtime in the hardware. This commit enables the functionality by
    calculating the expected airtime usage of each packet that is dequeued from
    the TXQs in mac80211, and accounting that as pending airtime.
    
    The estimated airtime for each skb is stored in the tx_info, so we can
    subtract the same amount from the running total when the skb is freed or
    recycled. The throttling mechanism relies on this accounting to be
    accurate (i.e., that we are not freeing skbs without subtracting any
    airtime they were accounted for), so we put the subtraction into
    ieee80211_report_used_skb(). As an optimisation, we also subtract the
    airtime on regular TX completion, zeroing out the value stored in the
    packet afterwards, to avoid having to do an expensive lookup of the station
    from the packet data on every packet.
    
    This patch does *not* include any mechanism to wake a throttled TXQ again,
    on the assumption that this will happen anyway as a side effect of whatever
    freed the skb (most commonly a TX completion).
    Signed-off-by: default avatarToke Høiland-Jørgensen <toke@redhat.com>
    Link: https://lore.kernel.org/r/20191119060610.76681-5-kyan@google.comSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    7a89233a
status.c 35.4 KB