summaryrefslogtreecommitdiff
path: root/package/mac80211
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2013-04-10 21:17:33 +0000
committerFelix Fietkau <nbd@openwrt.org>2013-04-10 21:17:33 +0000
commit87395ec919578f47232ec92da18388d9e9ae111f (patch)
tree463f63ee3c36e4c858d4ee76c5767239550f7295 /package/mac80211
parent6436b3f7363c0968c4b469c62efe985e71c7a543 (diff)
downloadmtk-20170518-87395ec919578f47232ec92da18388d9e9ae111f.zip
mtk-20170518-87395ec919578f47232ec92da18388d9e9ae111f.tar.gz
mtk-20170518-87395ec919578f47232ec92da18388d9e9ae111f.tar.bz2
mac80211: fix a client mode reconnect issue
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 36311
Diffstat (limited to 'package/mac80211')
-rw-r--r--package/mac80211/patches/300-pending_work.patch40
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 f3b7d40..a609c9a 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;