diff options
author | Juuso Oikarinen <juuso.oikarinen@nokia.com> | 2010-04-19 10:12:52 +0300 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-04-19 16:41:42 -0400 |
commit | 3393a608c4979a94d1887efc05b792849d361a65 (patch) | |
tree | 0aceeb1e67fd23f82844086fcc5fb6c16b24dafc /net/mac80211/tx.c | |
parent | 2aab4c273ad837fbcf2955aee32b9ec4706c2521 (diff) | |
download | linux-3.10-3393a608c4979a94d1887efc05b792849d361a65.tar.gz linux-3.10-3393a608c4979a94d1887efc05b792849d361a65.tar.bz2 linux-3.10-3393a608c4979a94d1887efc05b792849d361a65.zip |
mac80211: Prevent running sta_cleanup timer unnecessarily
The sta_cleanup timer is used to periodically expire buffered frames from the
tx buf. The timer is executing periodically, regardless of the need for it.
This is wasting resources.
Fix this simply by not restarting the sta_cleanup timer if the tx buffer was
empty. Restart the timer when there is some more tx-traffic.
Cc: Janne Ylälehto <janne.ylalehto@nokia.com>
Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/tx.c')
-rw-r--r-- | net/mac80211/tx.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 2cb77267f73..e2aa972d584 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c @@ -429,6 +429,7 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_tx_data *tx) struct sta_info *sta = tx->sta; struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb); struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data; + struct ieee80211_local *local = tx->local; u32 staflags; if (unlikely(!sta || @@ -476,6 +477,12 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_tx_data *tx) info->control.vif = &tx->sdata->vif; info->flags |= IEEE80211_TX_INTFL_NEED_TXPROCESSING; skb_queue_tail(&sta->ps_tx_buf, tx->skb); + + if (!timer_pending(&local->sta_cleanup)) + mod_timer(&local->sta_cleanup, + round_jiffies(jiffies + + STA_INFO_CLEANUP_INTERVAL)); + return TX_QUEUED; } #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG |