mac80211: make deauth/disassoc sequence more natural
authorJohannes Berg <johannes.berg@intel.com>
Fri, 24 Feb 2012 12:50:54 +0000 (13:50 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 29 Feb 2012 19:11:34 +0000 (14:11 -0500)
commit37ad38887d9ca5ed66c6f2b14a8921794bf3d4c3
tree3c594ce2d6201209a65b197720bc2e6081988926
parent02d83e60b9864e7920d87b49e1fbedffd32470f8
mac80211: make deauth/disassoc sequence more natural

The association sequence looks (roughly) like
this now:
 * set BSSID
 * set station to EXIST state
 * send auth
 * set station to AUTH state
 * send assoc
 * set station to ASSOC state
 * set BSS info to associated

In contrast, the deauth/disassoc sequence is
the other way around:
 * clear BSSID/BSS info state
 * remove station
 * send deauth/disassoc
(in some cases the last two steps are reversed.)

This patch encodes the entire sequence in the
ieee80211_set_disassoc() function and changes
it to be like this, for good measure with an
explicit flush:
 * send deauth/disassoc
 * flush
 * remove station
 * clear BSSID/BSS info state

At least iwlwifi gets confused with the other
sequence in P2P mode and complains that it
wasn't able to flush the queues.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/mlme.c