diff options
Diffstat (limited to 'net/mac80211/mlme.c')
| -rw-r--r-- | net/mac80211/mlme.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index dee50aefd6e8..27600a9808ba 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
| @@ -3598,18 +3598,24 @@ void ieee80211_mgd_quiesce(struct ieee80211_sub_if_data *sdata) | |||
| 3598 | 3598 | ||
| 3599 | sdata_lock(sdata); | 3599 | sdata_lock(sdata); |
| 3600 | 3600 | ||
| 3601 | if (ifmgd->auth_data) { | 3601 | if (ifmgd->auth_data || ifmgd->assoc_data) { |
| 3602 | const u8 *bssid = ifmgd->auth_data ? | ||
| 3603 | ifmgd->auth_data->bss->bssid : | ||
| 3604 | ifmgd->assoc_data->bss->bssid; | ||
| 3605 | |||
| 3602 | /* | 3606 | /* |
| 3603 | * If we are trying to authenticate while suspending, cfg80211 | 3607 | * If we are trying to authenticate / associate while suspending, |
| 3604 | * won't know and won't actually abort those attempts, thus we | 3608 | * cfg80211 won't know and won't actually abort those attempts, |
| 3605 | * need to do that ourselves. | 3609 | * thus we need to do that ourselves. |
| 3606 | */ | 3610 | */ |
| 3607 | ieee80211_send_deauth_disassoc(sdata, | 3611 | ieee80211_send_deauth_disassoc(sdata, bssid, |
| 3608 | ifmgd->auth_data->bss->bssid, | ||
| 3609 | IEEE80211_STYPE_DEAUTH, | 3612 | IEEE80211_STYPE_DEAUTH, |
| 3610 | WLAN_REASON_DEAUTH_LEAVING, | 3613 | WLAN_REASON_DEAUTH_LEAVING, |
| 3611 | false, frame_buf); | 3614 | false, frame_buf); |
| 3612 | ieee80211_destroy_auth_data(sdata, false); | 3615 | if (ifmgd->assoc_data) |
| 3616 | ieee80211_destroy_assoc_data(sdata, false); | ||
| 3617 | if (ifmgd->auth_data) | ||
| 3618 | ieee80211_destroy_auth_data(sdata, false); | ||
| 3613 | cfg80211_tx_mlme_mgmt(sdata->dev, frame_buf, | 3619 | cfg80211_tx_mlme_mgmt(sdata->dev, frame_buf, |
| 3614 | IEEE80211_DEAUTH_FRAME_LEN); | 3620 | IEEE80211_DEAUTH_FRAME_LEN); |
| 3615 | } | 3621 | } |
