diff options
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r-- | net/mac80211/mlme.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 2ded4766d014..5509c5aa6beb 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -890,6 +890,7 @@ static void ieee80211_direct_probe(struct ieee80211_sub_if_data *sdata) | |||
890 | printk(KERN_DEBUG "%s: direct probe to AP %pM timed out\n", | 890 | printk(KERN_DEBUG "%s: direct probe to AP %pM timed out\n", |
891 | sdata->dev->name, ifmgd->bssid); | 891 | sdata->dev->name, ifmgd->bssid); |
892 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; | 892 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; |
893 | ieee80211_recalc_idle(local); | ||
893 | cfg80211_send_auth_timeout(sdata->dev, ifmgd->bssid); | 894 | cfg80211_send_auth_timeout(sdata->dev, ifmgd->bssid); |
894 | 895 | ||
895 | /* | 896 | /* |
@@ -938,6 +939,7 @@ static void ieee80211_authenticate(struct ieee80211_sub_if_data *sdata) | |||
938 | " timed out\n", | 939 | " timed out\n", |
939 | sdata->dev->name, ifmgd->bssid); | 940 | sdata->dev->name, ifmgd->bssid); |
940 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; | 941 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; |
942 | ieee80211_recalc_idle(local); | ||
941 | cfg80211_send_auth_timeout(sdata->dev, ifmgd->bssid); | 943 | cfg80211_send_auth_timeout(sdata->dev, ifmgd->bssid); |
942 | ieee80211_rx_bss_remove(sdata, ifmgd->bssid, | 944 | ieee80211_rx_bss_remove(sdata, ifmgd->bssid, |
943 | sdata->local->hw.conf.channel->center_freq, | 945 | sdata->local->hw.conf.channel->center_freq, |
@@ -1041,6 +1043,8 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata, | |||
1041 | 1043 | ||
1042 | rcu_read_unlock(); | 1044 | rcu_read_unlock(); |
1043 | 1045 | ||
1046 | ieee80211_recalc_idle(local); | ||
1047 | |||
1044 | /* channel(_type) changes are handled by ieee80211_hw_config */ | 1048 | /* channel(_type) changes are handled by ieee80211_hw_config */ |
1045 | local->oper_channel_type = NL80211_CHAN_NO_HT; | 1049 | local->oper_channel_type = NL80211_CHAN_NO_HT; |
1046 | 1050 | ||
@@ -1121,6 +1125,7 @@ static void ieee80211_associate(struct ieee80211_sub_if_data *sdata) | |||
1121 | " timed out\n", | 1125 | " timed out\n", |
1122 | sdata->dev->name, ifmgd->bssid); | 1126 | sdata->dev->name, ifmgd->bssid); |
1123 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; | 1127 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; |
1128 | ieee80211_recalc_idle(local); | ||
1124 | cfg80211_send_assoc_timeout(sdata->dev, ifmgd->bssid); | 1129 | cfg80211_send_assoc_timeout(sdata->dev, ifmgd->bssid); |
1125 | ieee80211_rx_bss_remove(sdata, ifmgd->bssid, | 1130 | ieee80211_rx_bss_remove(sdata, ifmgd->bssid, |
1126 | sdata->local->hw.conf.channel->center_freq, | 1131 | sdata->local->hw.conf.channel->center_freq, |
@@ -1141,6 +1146,7 @@ static void ieee80211_associate(struct ieee80211_sub_if_data *sdata) | |||
1141 | printk(KERN_DEBUG "%s: mismatch in privacy configuration and " | 1146 | printk(KERN_DEBUG "%s: mismatch in privacy configuration and " |
1142 | "mixed-cell disabled - abort association\n", sdata->dev->name); | 1147 | "mixed-cell disabled - abort association\n", sdata->dev->name); |
1143 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; | 1148 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; |
1149 | ieee80211_recalc_idle(local); | ||
1144 | return; | 1150 | return; |
1145 | } | 1151 | } |
1146 | 1152 | ||
@@ -1279,6 +1285,7 @@ static void ieee80211_auth_completed(struct ieee80211_sub_if_data *sdata) | |||
1279 | if (ifmgd->flags & IEEE80211_STA_EXT_SME) { | 1285 | if (ifmgd->flags & IEEE80211_STA_EXT_SME) { |
1280 | /* Wait for SME to request association */ | 1286 | /* Wait for SME to request association */ |
1281 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; | 1287 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; |
1288 | ieee80211_recalc_idle(sdata->local); | ||
1282 | } else | 1289 | } else |
1283 | ieee80211_associate(sdata); | 1290 | ieee80211_associate(sdata); |
1284 | } | 1291 | } |
@@ -1515,6 +1522,7 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata, | |||
1515 | if (ifmgd->flags & IEEE80211_STA_EXT_SME) { | 1522 | if (ifmgd->flags & IEEE80211_STA_EXT_SME) { |
1516 | /* Wait for SME to decide what to do next */ | 1523 | /* Wait for SME to decide what to do next */ |
1517 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; | 1524 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; |
1525 | ieee80211_recalc_idle(local); | ||
1518 | } | 1526 | } |
1519 | return; | 1527 | return; |
1520 | } | 1528 | } |
@@ -2083,6 +2091,7 @@ static int ieee80211_sta_config_auth(struct ieee80211_sub_if_data *sdata) | |||
2083 | } else { | 2091 | } else { |
2084 | ifmgd->assoc_scan_tries = 0; | 2092 | ifmgd->assoc_scan_tries = 0; |
2085 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; | 2093 | ifmgd->state = IEEE80211_STA_MLME_DISABLED; |
2094 | ieee80211_recalc_idle(local); | ||
2086 | } | 2095 | } |
2087 | } | 2096 | } |
2088 | return -1; | 2097 | return -1; |
@@ -2126,6 +2135,8 @@ static void ieee80211_sta_work(struct work_struct *work) | |||
2126 | } else if (!test_and_clear_bit(IEEE80211_STA_REQ_RUN, &ifmgd->request)) | 2135 | } else if (!test_and_clear_bit(IEEE80211_STA_REQ_RUN, &ifmgd->request)) |
2127 | return; | 2136 | return; |
2128 | 2137 | ||
2138 | ieee80211_recalc_idle(local); | ||
2139 | |||
2129 | switch (ifmgd->state) { | 2140 | switch (ifmgd->state) { |
2130 | case IEEE80211_STA_MLME_DISABLED: | 2141 | case IEEE80211_STA_MLME_DISABLED: |
2131 | break; | 2142 | break; |