mac80211: optimize aggregation session timeout handling
authorFelix Fietkau <nbd@openwrt.org>
Sun, 18 Mar 2012 21:58:06 +0000 (22:58 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 9 Apr 2012 20:09:36 +0000 (16:09 -0400)
commit12d3952fc4a1cd96234bc7023bf7eefeb0bb6355
tree5c3437e1f996a5c772b286530a3fce547a7d40f2
parentfcb2c9e1025cd529890303ffbde813a98cdffed4
mac80211: optimize aggregation session timeout handling

Calling mod_timer from the rx/tx hotpath is somewhat expensive, and the
timeout doesn't need to be so precise.

Switch to a different strategy: Schedule the timer initially, store jiffies
of all last rx/tx activity which would previously modify the timer, and
let the timer re-arm itself after checking the last rx/tx timestamp.
Make the session timers deferrable to avoid causing extra wakeups on systems
running on battery.
This visibly reduces CPU load under high network load on small embedded
systems.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/agg-rx.c
net/mac80211/agg-tx.c
net/mac80211/ieee80211_i.h
net/mac80211/rx.c
net/mac80211/sta_info.h
net/mac80211/tx.c