|
@@ -428,6 +428,7 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata,
|
|
|
sdata->bss_conf.assoc = 1;
|
|
|
ieee80211_bss_info_change_notify(sdata, changed);
|
|
|
|
|
|
+ netif_tx_start_all_queues(sdata->dev);
|
|
|
netif_carrier_on(sdata->dev);
|
|
|
|
|
|
ieee80211_sta_send_apinfo(sdata, ifsta);
|
|
@@ -849,6 +850,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
|
|
|
ifsta->assoc_scan_tries = 0;
|
|
|
ifsta->assoc_tries = 0;
|
|
|
|
|
|
+ netif_tx_stop_all_queues(sdata->dev);
|
|
|
netif_carrier_off(sdata->dev);
|
|
|
|
|
|
ieee80211_sta_tear_down_BA_sessions(sdata, sta->addr);
|
|
@@ -3268,6 +3270,7 @@ static void ieee80211_sta_reset_auth(struct ieee80211_sub_if_data *sdata,
|
|
|
ifsta->direct_probe_tries = 0;
|
|
|
ifsta->auth_tries = 0;
|
|
|
ifsta->assoc_tries = 0;
|
|
|
+ netif_tx_stop_all_queues(sdata->dev);
|
|
|
netif_carrier_off(sdata->dev);
|
|
|
}
|
|
|
|
|
@@ -3744,13 +3747,15 @@ void ieee80211_scan_completed(struct ieee80211_hw *hw)
|
|
|
rcu_read_lock();
|
|
|
list_for_each_entry_rcu(sdata, &local->interfaces, list) {
|
|
|
/* Tell AP we're back */
|
|
|
- if (sdata->vif.type == IEEE80211_IF_TYPE_STA &&
|
|
|
- sdata->u.sta.flags & IEEE80211_STA_ASSOCIATED)
|
|
|
- ieee80211_send_nullfunc(local, sdata, 0);
|
|
|
+ if (sdata->vif.type == IEEE80211_IF_TYPE_STA) {
|
|
|
+ if (sdata->u.sta.flags & IEEE80211_STA_ASSOCIATED) {
|
|
|
+ ieee80211_send_nullfunc(local, sdata, 0);
|
|
|
+ netif_tx_wake_all_queues(sdata->dev);
|
|
|
+ }
|
|
|
+ } else
|
|
|
+ netif_tx_wake_all_queues(sdata->dev);
|
|
|
|
|
|
ieee80211_restart_sta_timer(sdata);
|
|
|
-
|
|
|
- netif_wake_queue(sdata->dev);
|
|
|
}
|
|
|
rcu_read_unlock();
|
|
|
|
|
@@ -3908,10 +3913,13 @@ static int ieee80211_sta_start_scan(struct ieee80211_sub_if_data *scan_sdata,
|
|
|
|
|
|
rcu_read_lock();
|
|
|
list_for_each_entry_rcu(sdata, &local->interfaces, list) {
|
|
|
- netif_stop_queue(sdata->dev);
|
|
|
- if (sdata->vif.type == IEEE80211_IF_TYPE_STA &&
|
|
|
- (sdata->u.sta.flags & IEEE80211_STA_ASSOCIATED))
|
|
|
- ieee80211_send_nullfunc(local, sdata, 1);
|
|
|
+ if (sdata->vif.type == IEEE80211_IF_TYPE_STA) {
|
|
|
+ if (sdata->u.sta.flags & IEEE80211_STA_ASSOCIATED) {
|
|
|
+ netif_tx_stop_all_queues(sdata->dev);
|
|
|
+ ieee80211_send_nullfunc(local, sdata, 1);
|
|
|
+ }
|
|
|
+ } else
|
|
|
+ netif_tx_stop_all_queues(sdata->dev);
|
|
|
}
|
|
|
rcu_read_unlock();
|
|
|
|