|
@@ -1083,8 +1083,6 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
|
|
|
|
|
|
ieee80211_set_wmm_default(sdata);
|
|
|
|
|
|
- ieee80211_recalc_idle(local);
|
|
|
-
|
|
|
/* channel(_type) changes are handled by ieee80211_hw_config */
|
|
|
local->oper_channel_type = NL80211_CHAN_NO_HT;
|
|
|
|
|
@@ -1370,6 +1368,7 @@ ieee80211_rx_mgmt_deauth(struct ieee80211_sub_if_data *sdata,
|
|
|
|
|
|
if (!wk) {
|
|
|
ieee80211_set_disassoc(sdata, true);
|
|
|
+ ieee80211_recalc_idle(sdata->local);
|
|
|
} else {
|
|
|
list_del(&wk->list);
|
|
|
kfree(wk);
|
|
@@ -1403,6 +1402,7 @@ ieee80211_rx_mgmt_disassoc(struct ieee80211_sub_if_data *sdata,
|
|
|
sdata->dev->name, mgmt->sa, reason_code);
|
|
|
|
|
|
ieee80211_set_disassoc(sdata, false);
|
|
|
+ ieee80211_recalc_idle(sdata->local);
|
|
|
return RX_MGMT_CFG80211_DISASSOC;
|
|
|
}
|
|
|
|
|
@@ -2117,6 +2117,7 @@ static void ieee80211_sta_work(struct work_struct *work)
|
|
|
" after %dms, disconnecting.\n",
|
|
|
bssid, (1000 * IEEE80211_PROBE_WAIT)/HZ);
|
|
|
ieee80211_set_disassoc(sdata, true);
|
|
|
+ ieee80211_recalc_idle(local);
|
|
|
mutex_unlock(&ifmgd->mtx);
|
|
|
/*
|
|
|
* must be outside lock due to cfg80211,
|
|
@@ -2560,6 +2561,8 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
|
|
|
IEEE80211_STYPE_DEAUTH, req->reason_code,
|
|
|
cookie);
|
|
|
|
|
|
+ ieee80211_recalc_idle(sdata->local);
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -2592,5 +2595,8 @@ int ieee80211_mgd_disassoc(struct ieee80211_sub_if_data *sdata,
|
|
|
ieee80211_send_deauth_disassoc(sdata, req->bss->bssid,
|
|
|
IEEE80211_STYPE_DISASSOC, req->reason_code,
|
|
|
cookie);
|
|
|
+
|
|
|
+ ieee80211_recalc_idle(sdata->local);
|
|
|
+
|
|
|
return 0;
|
|
|
}
|