aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2012-07-18 07:51:25 -0400
committerJohannes Berg <johannes.berg@intel.com>2013-01-03 07:01:42 -0500
commit18b559d5db47c86b10c14590aa2d26c0243c39e4 (patch)
tree15db56605202e2b43628b0f441ca6275bf9b2d50 /drivers/net/wireless/rt2x00
parent30bf5f1f433c7612857ed13c50525945c483dfe0 (diff)
mac80211: split TX aggregation stop action
When TX aggregation is stopped, there are a few different cases: - connection with the peer was dropped - session stop was requested locally - session stop was requested by the peer - connection was dropped while a session is stopping The behaviour in these cases should be different, if the connection is dropped then the driver should drop all frames, otherwise the frames may continue to be transmitted, aggregated in the case of a locally requested session stop or unaggregated in the case of the peer requesting session stop. Split these different cases so that the driver can act accordingly; however, treat local and remote stop the same way and ask the driver to not send frames as aggregated packets any more. In the case of connection drop, the stop callback the driver is otherwise supposed to call is no longer required. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00')
-rw-r--r--drivers/net/wireless/rt2x00/rt2800lib.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index 197b4466a5d2..12f93e42e160 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -5484,7 +5484,9 @@ int rt2800_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
5484 case IEEE80211_AMPDU_TX_START: 5484 case IEEE80211_AMPDU_TX_START:
5485 ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid); 5485 ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid);
5486 break; 5486 break;
5487 case IEEE80211_AMPDU_TX_STOP: 5487 case IEEE80211_AMPDU_TX_STOP_CONT:
5488 case IEEE80211_AMPDU_TX_STOP_FLUSH:
5489 case IEEE80211_AMPDU_TX_STOP_FLUSH_CONT:
5488 ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid); 5490 ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);
5489 break; 5491 break;
5490 case IEEE80211_AMPDU_TX_OPERATIONAL: 5492 case IEEE80211_AMPDU_TX_OPERATIONAL: