diff options
Diffstat (limited to 'net/mac80211/ieee80211_sta.c')
-rw-r--r-- | net/mac80211/ieee80211_sta.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/net/mac80211/ieee80211_sta.c b/net/mac80211/ieee80211_sta.c index 9beedb655896..fc73ca4abc08 100644 --- a/net/mac80211/ieee80211_sta.c +++ b/net/mac80211/ieee80211_sta.c | |||
@@ -467,8 +467,8 @@ static void ieee80211_set_associated(struct net_device *dev, | |||
467 | memcpy(wrqu.ap_addr.sa_data, sdata->u.sta.bssid, ETH_ALEN); | 467 | memcpy(wrqu.ap_addr.sa_data, sdata->u.sta.bssid, ETH_ALEN); |
468 | ieee80211_sta_send_associnfo(dev, ifsta); | 468 | ieee80211_sta_send_associnfo(dev, ifsta); |
469 | } else { | 469 | } else { |
470 | ieee80211_sta_tear_down_BA_sessions(dev, ifsta->bssid); | ||
470 | ifsta->flags &= ~IEEE80211_STA_ASSOCIATED; | 471 | ifsta->flags &= ~IEEE80211_STA_ASSOCIATED; |
471 | |||
472 | netif_carrier_off(dev); | 472 | netif_carrier_off(dev); |
473 | ieee80211_reset_erp_info(dev); | 473 | ieee80211_reset_erp_info(dev); |
474 | memset(wrqu.ap_addr.sa_data, 0, ETH_ALEN); | 474 | memset(wrqu.ap_addr.sa_data, 0, ETH_ALEN); |
@@ -1518,6 +1518,19 @@ void sta_rx_agg_session_timer_expired(unsigned long data) | |||
1518 | WLAN_REASON_QSTA_TIMEOUT); | 1518 | WLAN_REASON_QSTA_TIMEOUT); |
1519 | } | 1519 | } |
1520 | 1520 | ||
1521 | void ieee80211_sta_tear_down_BA_sessions(struct net_device *dev, u8 *addr) | ||
1522 | { | ||
1523 | struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); | ||
1524 | int i; | ||
1525 | |||
1526 | for (i = 0; i < STA_TID_NUM; i++) { | ||
1527 | ieee80211_stop_tx_ba_session(&local->hw, addr, i, | ||
1528 | WLAN_BACK_INITIATOR); | ||
1529 | ieee80211_sta_stop_rx_ba_session(dev, addr, i, | ||
1530 | WLAN_BACK_RECIPIENT, | ||
1531 | WLAN_REASON_QSTA_LEAVE_QBSS); | ||
1532 | } | ||
1533 | } | ||
1521 | 1534 | ||
1522 | static void ieee80211_rx_mgmt_auth(struct net_device *dev, | 1535 | static void ieee80211_rx_mgmt_auth(struct net_device *dev, |
1523 | struct ieee80211_if_sta *ifsta, | 1536 | struct ieee80211_if_sta *ifsta, |