linux/net/mac80211
Johannes Berg 7b119dc06d mac80211: fix cfg80211 interaction on auth/assoc request
If authentication (or association with FT) is requested by
userspace, mac80211 currently doesn't tell cfg80211 that it
disconnected from the AP. That leaves inconsistent state:
cfg80211 thinks it's connected while mac80211 thinks it's
not. Typically this won't last long, as soon as mac80211
reports the new association to cfg80211 the old one goes
away. If, however, the new authentication or association
doesn't succeed, then cfg80211 will forever think the old
one still exists and will refuse attempts to authenticate
or associate with the AP it thinks it's connected to.

Anders reported that this leads to it taking a very long
time to reconnect to a network, or never even succeeding.
I tested this with an AP hacked to never respond to auth
frames, and one that works, and with just those two the
system never recovers because one won't work and cfg80211
thinks it's connected to the other so refuses connections
to it.

To fix this, simply make mac80211 tell cfg80211 when it is
no longer connected to the old AP, while authenticating or
associating to a new one.

Cc: stable@vger.kernel.org
Reported-by: Anders Kaseorg <andersk@mit.edu>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2013-04-10 21:38:36 +02:00
..
aes_ccm.c mac80211: use AES_BLOCK_SIZE 2011-07-08 11:11:24 -04:00
aes_ccm.h mac80211: use AES_BLOCK_SIZE 2011-07-08 11:11:24 -04:00
aes_cmac.c mac80211: include export.h in aes_cmac 2012-11-07 18:01:54 +01:00
aes_cmac.h mac80211: fix CMAC races 2011-07-08 11:11:20 -04:00
agg-rx.c mac80211: improve aggregation debug messages 2013-01-18 21:55:15 +01:00
agg-tx.c mac80211: fix aggregation state with current drivers 2013-01-24 15:43:51 +01:00
cfg.c mac80211: fix remain-on-channel cancel crash 2013-03-25 13:50:33 +01:00
cfg.h
chan.c mac80211: fix idle handling sequence 2013-03-25 16:50:18 +01:00
debug.h mac80211: mesh power save basics 2013-02-04 18:57:47 +01:00
debugfs_key.c mac80211: add debug file for mic failure 2012-12-05 09:44:41 +01:00
debugfs_key.h
debugfs_netdev.c mac80211: mesh power save basics 2013-02-04 18:57:47 +01:00
debugfs_netdev.h
debugfs_sta.c mac80211: mesh power save basics 2013-02-04 18:57:47 +01:00
debugfs_sta.h
debugfs.c mac80211: remove IEEE80211_HW_SCAN_WHILE_IDLE 2013-02-11 18:45:01 +01:00
debugfs.h mac80211: use __printf attribute in debugfs 2012-10-18 09:01:57 +02:00
driver-ops.h mac80211: don't call bss_info_changed on p2p-device/monitor 2013-02-15 09:41:11 +01:00
event.c
ht.c mac80211: stop modifying HT SMPS capability 2013-02-15 09:41:41 +01:00
ibss.c mac80211: stop toggling IEEE80211_HT_CAP_SUP_WIDTH_20_40 2013-02-15 09:41:30 +01:00
ieee80211_i.h mac80211: fix idle handling sequence 2013-03-25 16:50:18 +01:00
iface.c mac80211: fix LED in idle handling 2013-04-08 13:12:05 +02:00
Kconfig mac80211: mesh power save basics 2013-02-04 18:57:47 +01:00
key.c mac80211: add op to configure default key id 2013-01-18 13:30:21 +01:00
key.h mac80211: add debug file for mic failure 2012-12-05 09:44:41 +01:00
led.c leds: Rename led_brightness_set() to led_set_brightness() 2012-07-24 07:52:34 +08:00
led.h
main.c mac80211: clean up mesh code 2013-02-15 15:46:37 +01:00
Makefile mac80211: mesh power save basics 2013-02-04 18:57:47 +01:00
mesh_hwmp.c mac80211: clean up mesh code 2013-02-15 15:46:37 +01:00
mesh_pathtbl.c mac80211: clean up mesh code 2013-02-15 15:46:37 +01:00
mesh_plink.c mac80211: stringify mesh peering events 2013-02-18 15:31:23 +01:00
mesh_ps.c mac80211: consolidate MBSS change notification 2013-02-15 09:41:09 +01:00
mesh_sync.c mac80211: clean up mesh code 2013-02-15 15:46:37 +01:00
mesh.c mac80211: Don't restart sta-timer if not associated. 2013-03-24 11:15:59 +01:00
mesh.h mac80211: clean up mesh code 2013-02-15 15:46:37 +01:00
michael.c
michael.h
mlme.c mac80211: fix cfg80211 interaction on auth/assoc request 2013-04-10 21:38:36 +02:00
offchannel.c mac80211: fix remain-on-channel cancel crash 2013-03-25 13:50:33 +01:00
pm.c mac80211: add radar detection command/event 2013-02-15 09:41:04 +01:00
rate.c mac80211: convert to channel definition struct 2012-11-26 12:42:59 +01:00
rate.h mac80211: track number of spatial streams 2013-02-15 09:41:31 +01:00
rc80211_minstrel_debugfs.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
rc80211_minstrel_ht_debugfs.c mac80211/minstrel_ht: add support for using CCK rates 2013-02-13 10:56:33 +01:00
rc80211_minstrel_ht.c mac80211: stop modifying HT SMPS capability 2013-02-15 09:41:41 +01:00
rc80211_minstrel_ht.h mac80211/minstrel_ht: add support for using CCK rates 2013-02-13 10:56:33 +01:00
rc80211_minstrel.c mac80211/minstrel_ht: add support for using CCK rates 2013-02-13 10:56:33 +01:00
rc80211_minstrel.h mac80211/minstrel_ht: add support for using CCK rates 2013-02-13 10:56:33 +01:00
rc80211_pid_algo.c net: fix assignment of 0/1 to bool variables. 2011-12-19 22:27:29 -05:00
rc80211_pid_debugfs.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
rc80211_pid.h Fix common misspellings 2011-03-31 11:26:23 -03:00
rx.c mac80211: fix crash with P2P Device returning action frames 2013-03-11 09:37:50 +02:00
scan.c mac80211: add radar detection command/event 2013-02-15 09:41:04 +01:00
spectmgmt.c mac80211: Remove unnecessary OOM logging messages 2011-09-13 15:45:02 -04:00
sta_info.c mac80211: always synchronize_net() during station removal 2013-03-06 23:17:08 +01:00
sta_info.h mac80211: clean up mesh HT operation 2013-02-18 15:31:23 +01:00
status.c mac80211: mesh power save basics 2013-02-04 18:57:47 +01:00
tkip.c mac80211: use spin_lock_bh() for TKIP lock 2013-02-15 09:41:13 +01:00
tkip.h mac80211: fix TKIP races, make API easier to use 2011-07-08 11:11:19 -04:00
trace.c mac80211: trace debug messages 2012-06-24 11:33:18 +02:00
trace.h mac80211: Fix incorrect use of STA_PR_FMT in trace points 2013-02-15 20:25:11 +01:00
tx.c mac80211: fix oops on mesh PS broadcast forwarding 2013-03-01 16:09:41 +01:00
util.c mac80211: constify IE parsing 2013-02-15 09:41:39 +01:00
vht.c mac80211: constify IE parsing 2013-02-15 09:41:39 +01:00
wep.c mac80211: fix network header location when adding encryption headers 2012-05-16 12:47:43 -04:00
wep.h mac80211: move RX WEP weak IV counting 2012-03-13 14:54:16 -04:00
wme.c mac80211: mesh power save basics 2013-02-04 18:57:47 +01:00
wme.h mac80211: save wmm_acm per sdata 2012-06-20 17:35:22 +02:00
wpa.c mac80211: use spin_lock_bh() for TKIP lock 2013-02-15 09:41:13 +01:00
wpa.h mac80211: fix tx->skb NULL pointer dereference 2012-01-16 15:01:16 -05:00