This series is a first attempt at porting the Airtime Queue Limits concept from the out-of-tree ath10k implementation[0] to mac80211. I limited the scope of this RFC to ath10k, but it should be straight forward to enable other drivers (they just need to provide a last TX bitrate). Unfortunately I don't currently have access to hardware to test this, so I'm posting it here in the hope that someone else will take it for a spin. Do note that this means that the series is completely untested (although it should compile :)). Also note that the series does make a couple of assumptions, as explained in the individual patches. In particular, it relies on fields surviving in ieee80211_tx_info; Johannes, care to comment on whether this is a valid assumption (and whether you're OK with what I'm doing to that struct in the first patch)? The series is also available in my git repo here: https://git.kernel.org/pub/scm/linux/kernel/git/toke/linux.git/log/?h=mac80211-aql-01 [0] https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/588190/13/drivers/net/wireless-4.2/ath/ath10k/mac.c#3845 --- Toke Høiland-Jørgensen (4): mac80211: Rearrange ieee80211_tx_info to make room for tx_time_est mac80211: Add API function to set the last TX bitrate for a station ath10k: Pass last TX bitrate up to mac80211 mac80211: Apply Airtime-based Queue Limit (AQL) on packet dequeue drivers/net/wireless/ath/ath10k/htt_rx.c | 1 + include/net/mac80211.h | 32 ++++++++++++++++++++----- net/mac80211/debugfs.c | 24 +++++++++++++++++++ net/mac80211/ieee80211_i.h | 11 +++++++++ net/mac80211/sta_info.c | 9 +++++++ net/mac80211/sta_info.h | 2 ++ net/mac80211/status.c | 22 +++++++++++++++++ net/mac80211/tx.c | 38 +++++++++++++++++++++++++++++- 8 files changed, 131 insertions(+), 8 deletions(-)