diff options
Diffstat (limited to 'net/mac80211/sta_info.c')
-rw-r--r-- | net/mac80211/sta_info.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c index 4ba3c540fcf3..c5f14e6bbde2 100644 --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c | |||
@@ -203,17 +203,6 @@ void sta_info_destroy(struct sta_info *sta) | |||
203 | if (tid_rx) | 203 | if (tid_rx) |
204 | tid_rx->shutdown = true; | 204 | tid_rx->shutdown = true; |
205 | 205 | ||
206 | /* | ||
207 | * The stop callback cannot find this station any more, but | ||
208 | * it didn't complete its work -- start the queue if necessary | ||
209 | */ | ||
210 | if (sta->ampdu_mlme.tid_state_tx[i] & HT_AGG_STATE_INITIATOR_MSK && | ||
211 | sta->ampdu_mlme.tid_state_tx[i] & HT_AGG_STATE_REQ_STOP_BA_MSK && | ||
212 | local->hw.ampdu_queues) | ||
213 | ieee80211_wake_queue_by_reason(&local->hw, | ||
214 | local->hw.queues + sta->tid_to_tx_q[i], | ||
215 | IEEE80211_QUEUE_STOP_REASON_AGGREGATION); | ||
216 | |||
217 | spin_unlock_bh(&sta->lock); | 206 | spin_unlock_bh(&sta->lock); |
218 | 207 | ||
219 | /* | 208 | /* |
@@ -239,6 +228,11 @@ void sta_info_destroy(struct sta_info *sta) | |||
239 | tid_tx = sta->ampdu_mlme.tid_tx[i]; | 228 | tid_tx = sta->ampdu_mlme.tid_tx[i]; |
240 | if (tid_tx) { | 229 | if (tid_tx) { |
241 | del_timer_sync(&tid_tx->addba_resp_timer); | 230 | del_timer_sync(&tid_tx->addba_resp_timer); |
231 | /* | ||
232 | * STA removed while aggregation session being | ||
233 | * started? Bit odd, but purge frames anyway. | ||
234 | */ | ||
235 | skb_queue_purge(&tid_tx->pending); | ||
242 | kfree(tid_tx); | 236 | kfree(tid_tx); |
243 | } | 237 | } |
244 | } | 238 | } |
@@ -287,7 +281,6 @@ struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata, | |||
287 | * enable session_timer's data differentiation. refer to | 281 | * enable session_timer's data differentiation. refer to |
288 | * sta_rx_agg_session_timer_expired for useage */ | 282 | * sta_rx_agg_session_timer_expired for useage */ |
289 | sta->timer_to_tid[i] = i; | 283 | sta->timer_to_tid[i] = i; |
290 | sta->tid_to_tx_q[i] = -1; | ||
291 | /* rx */ | 284 | /* rx */ |
292 | sta->ampdu_mlme.tid_state_rx[i] = HT_AGG_STATE_IDLE; | 285 | sta->ampdu_mlme.tid_state_rx[i] = HT_AGG_STATE_IDLE; |
293 | sta->ampdu_mlme.tid_rx[i] = NULL; | 286 | sta->ampdu_mlme.tid_rx[i] = NULL; |