minstrel_ht: fix Open BA session request floods
authorChristian Lamparter <chunkeey@googlemail.com>
Sat, 3 Sep 2011 07:06:20 +0000 (09:06 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 14 Sep 2011 17:56:23 +0000 (13:56 -0400)
Minstrel HT tries very hard to establish a BA session with
each peer once there's some data on the way. However the
stack does not inform minstrel if an aggregation session
is already in place, so it keeps trying and wastes good
cycles in the tx status path.

[ 8149.946393] Open BA session requested for $AP tid 0
[ 8150.048765] Open BA session requested for $AP tid 0
[ 8150.174509] Open BA session requested for $AP tid 0
[ 8150.274376] Open BA session requested for $AP tid 0
...

Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Acked-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/rc80211_minstrel_ht.c

index 21588386a30207598d9d565841f8f4caaaa08d50..e19249b0f97124697a5d8c64c9c5e70ab397f0a1 100644 (file)
@@ -452,7 +452,8 @@ minstrel_ht_tx_status(void *priv, struct ieee80211_supported_band *sband,
 
        if (time_after(jiffies, mi->stats_update + (mp->update_interval / 2 * HZ) / 1000)) {
                minstrel_ht_update_stats(mp, mi);
-               minstrel_aggr_check(mp, sta, skb);
+               if (!(info->flags & IEEE80211_TX_CTL_AMPDU))
+                       minstrel_aggr_check(mp, sta, skb);
        }
 }