mac80211: fix a client mode reconnect issue
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Wed, 10 Apr 2013 21:17:33 +0000 (21:17 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Wed, 10 Apr 2013 21:17:33 +0000 (21:17 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36311 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/mac80211/patches/300-pending_work.patch

index f3b7d40..a609c9a 100644 (file)
        {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;