From 88427520aba37537a2fa3d780fd42b7664d1a880 Mon Sep 17 00:00:00 2001 From: Stanislaw Gruszka Date: Mon, 3 Dec 2012 12:56:33 +0100 Subject: [PATCH] --- yaml --- r: 342134 b: refs/heads/master c: 5b632fe85ec82e5c43740b52e74c66df50a37db3 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/include/net/mac80211.h | 5 +++++ trunk/net/mac80211/status.c | 6 +++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index ad9125d05941..b7300db87c26 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b98ea05861d76f458029096e8b2939fcb58e9530 +refs/heads/master: 5b632fe85ec82e5c43740b52e74c66df50a37db3 diff --git a/trunk/include/net/mac80211.h b/trunk/include/net/mac80211.h index 1c02fb3b3817..ee50c5eba50c 100644 --- a/trunk/include/net/mac80211.h +++ b/trunk/include/net/mac80211.h @@ -1369,6 +1369,10 @@ struct ieee80211_tx_control { * @IEEE80211_HW_P2P_DEV_ADDR_FOR_INTF: Use the P2P Device address for any * P2P Interface. This will be honoured even if more than one interface * is supported. + * + * @IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL: On this hardware TX BA session + * should be tear down once BAR frame will not be acked. + * */ enum ieee80211_hw_flags { IEEE80211_HW_HAS_RATE_CONTROL = 1<<0, @@ -1397,6 +1401,7 @@ enum ieee80211_hw_flags { IEEE80211_HW_TX_AMPDU_SETUP_IN_HW = 1<<23, IEEE80211_HW_SCAN_WHILE_IDLE = 1<<24, IEEE80211_HW_P2P_DEV_ADDR_FOR_INTF = 1<<25, + IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL = 1<<26, }; /** diff --git a/trunk/net/mac80211/status.c b/trunk/net/mac80211/status.c index 6400037dd8ec..04f6bf292a57 100644 --- a/trunk/net/mac80211/status.c +++ b/trunk/net/mac80211/status.c @@ -502,7 +502,11 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb) IEEE80211_BAR_CTRL_TID_INFO_MASK) >> IEEE80211_BAR_CTRL_TID_INFO_SHIFT; - ieee80211_set_bar_pending(sta, tid, ssn); + if (local->hw.flags & + IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL) + ieee80211_stop_tx_ba_session(&sta->sta, tid); + else + ieee80211_set_bar_pending(sta, tid, ssn); } }