mac80211: fix a client mode reconnect issue

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 36311
This commit is contained in:
Felix Fietkau 2013-04-10 21:17:33 +00:00
parent 6436b3f736
commit 87395ec919

View file

@ -1121,3 +1121,43 @@
{0x00008268, 0xffffffff}, {0x00008268, 0xffffffff},
{0x0000826c, 0x0000ffff}, {0x0000826c, 0x0000ffff},
{0x00008270, 0x00000000}, {0x00008270, 0x00000000},
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -3955,8 +3955,16 @@ int ieee80211_mgd_auth(struct ieee80211_
/* prep auth_data so we don't go into idle on disassoc */
ifmgd->auth_data = auth_data;
- if (ifmgd->associated)
- ieee80211_set_disassoc(sdata, 0, 0, false, NULL);
+ if (ifmgd->associated) {
+ u8 frame_buf[IEEE80211_DEAUTH_FRAME_LEN];
+
+ ieee80211_set_disassoc(sdata, IEEE80211_STYPE_DEAUTH,
+ WLAN_REASON_UNSPECIFIED,
+ false, frame_buf);
+
+ __cfg80211_send_deauth(sdata->dev, frame_buf,
+ sizeof(frame_buf));
+ }
sdata_info(sdata, "authenticate with %pM\n", req->bss->bssid);
@@ -4016,8 +4024,16 @@ int ieee80211_mgd_assoc(struct ieee80211
mutex_lock(&ifmgd->mtx);
- if (ifmgd->associated)
- ieee80211_set_disassoc(sdata, 0, 0, false, NULL);
+ if (ifmgd->associated) {
+ u8 frame_buf[IEEE80211_DEAUTH_FRAME_LEN];
+
+ ieee80211_set_disassoc(sdata, IEEE80211_STYPE_DEAUTH,
+ WLAN_REASON_UNSPECIFIED,
+ false, frame_buf);
+
+ __cfg80211_send_deauth(sdata->dev, frame_buf,
+ sizeof(frame_buf));
+ }
if (ifmgd->auth_data && !ifmgd->auth_data->done) {
err = -EBUSY;