diff options
-rw-r--r-- | net/mac80211/ieee80211_sta.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/net/mac80211/ieee80211_sta.c b/net/mac80211/ieee80211_sta.c index c4d57346eacf..d0273ccbdbae 100644 --- a/net/mac80211/ieee80211_sta.c +++ b/net/mac80211/ieee80211_sta.c | |||
@@ -1403,14 +1403,23 @@ static void ieee80211_sta_process_delba(struct net_device *dev, | |||
1403 | 1403 | ||
1404 | #ifdef CONFIG_MAC80211_HT_DEBUG | 1404 | #ifdef CONFIG_MAC80211_HT_DEBUG |
1405 | if (net_ratelimit()) | 1405 | if (net_ratelimit()) |
1406 | printk(KERN_DEBUG "delba from %s on tid %d reason code %d\n", | 1406 | printk(KERN_DEBUG "delba from %s (%s) tid %d reason code %d\n", |
1407 | print_mac(mac, mgmt->sa), tid, | 1407 | print_mac(mac, mgmt->sa), |
1408 | initiator ? "recipient" : "initiator", tid, | ||
1408 | mgmt->u.action.u.delba.reason_code); | 1409 | mgmt->u.action.u.delba.reason_code); |
1409 | #endif /* CONFIG_MAC80211_HT_DEBUG */ | 1410 | #endif /* CONFIG_MAC80211_HT_DEBUG */ |
1410 | 1411 | ||
1411 | if (initiator == WLAN_BACK_INITIATOR) | 1412 | if (initiator == WLAN_BACK_INITIATOR) |
1412 | ieee80211_sta_stop_rx_ba_session(dev, sta->addr, tid, | 1413 | ieee80211_sta_stop_rx_ba_session(dev, sta->addr, tid, |
1413 | WLAN_BACK_INITIATOR, 0); | 1414 | WLAN_BACK_INITIATOR, 0); |
1415 | else { /* WLAN_BACK_RECIPIENT */ | ||
1416 | spin_lock_bh(&sta->ampdu_mlme.ampdu_tx); | ||
1417 | sta->ampdu_mlme.tid_tx[tid].state = | ||
1418 | HT_AGG_STATE_OPERATIONAL; | ||
1419 | spin_unlock_bh(&sta->ampdu_mlme.ampdu_tx); | ||
1420 | ieee80211_stop_tx_ba_session(&local->hw, sta->addr, tid, | ||
1421 | WLAN_BACK_RECIPIENT); | ||
1422 | } | ||
1414 | sta_info_put(sta); | 1423 | sta_info_put(sta); |
1415 | } | 1424 | } |
1416 | 1425 | ||