diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-04-10 21:17:33 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2013-04-10 21:17:33 +0000 |
commit | 05f61163556a77fc5fe5264dc1b0143146bc0405 (patch) | |
tree | 789a5ccbb4225dbe1e641dc228eefeae2c778c4d | |
parent | 47ffc8ff86cc0ca9cdc59b457028e5e31c7e4180 (diff) | |
download | upstream-05f61163556a77fc5fe5264dc1b0143146bc0405.tar.gz upstream-05f61163556a77fc5fe5264dc1b0143146bc0405.tar.bz2 upstream-05f61163556a77fc5fe5264dc1b0143146bc0405.zip |
mac80211: fix a client mode reconnect issue
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36311 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r-- | package/mac80211/patches/300-pending_work.patch | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/package/mac80211/patches/300-pending_work.patch b/package/mac80211/patches/300-pending_work.patch index f3b7d40cb5..a609c9a5e7 100644 --- a/package/mac80211/patches/300-pending_work.patch +++ b/package/mac80211/patches/300-pending_work.patch @@ -1121,3 +1121,43 @@ {0x00008268, 0xffffffff}, {0x0000826c, 0x0000ffff}, {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; |