Commit Message

From: Toke Høiland-Jørgensen <toke@toke.dk>
This adds an API to mac80211 to handle scheduling of TXQs. The interface
between driver and mac80211 for TXQ handling is changed by adding two new
functions: ieee80211_next_txq(), which will return the next TXQ to schedule
in the current round-robin rotation, and ieee80211_return_txq(), which the
driver uses to indicate that it has finished scheduling a TXQ (which will
then be put back in the scheduling rotation if it isn't empty).
The driver must call ieee80211_txq_schedule_start() at the start of each
scheduling session, and ieee80211_txq_schedule_end() at the end. The API
then guarantees that the same TXQ is not returned twice in the same
session (so a driver can loop on ieee80211_next_txq() without worrying
about breaking the loop.
Usage of the new API is optional, so drivers can be ported one at a time.
In this patch, the actual scheduling performed by mac80211 is simple
round-robin, but a subsequent commit adds airtime fairness awareness to the
scheduler.
Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
---
include/net/mac80211.h | 62 +++++++++++++++++++++++++++++++++++++++++++---
net/mac80211/agg-tx.c | 2 +-
net/mac80211/driver-ops.h | 9 +++++++
net/mac80211/ieee80211_i.h | 9 +++++++
net/mac80211/main.c | 5 ++++
net/mac80211/sta_info.c | 2 +-
net/mac80211/tx.c | 58 ++++++++++++++++++++++++++++++++++++++++++-
7 files changed, 140 insertions(+), 7 deletions(-)