cfg80211: Add local-state-change-only auth/deauth/disassoc
authorJouni Malinen <j@w1.fi>
Sun, 4 Apr 2010 06:37:19 +0000 (09:37 +0300)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 7 Apr 2010 18:37:56 +0000 (14:37 -0400)
commitd5cdfacb35ed886271d1ccfffbded98d3447da17
tree8233a713949c4c8da8c98e75868efc74d5613c3d
parent7590a550b88b8c3cb025f0a8ed58e279ad62e4c1
cfg80211: Add local-state-change-only auth/deauth/disassoc

cfg80211 is quite strict on allowing authentication and association
commands only in certain states. In order to meet these requirements,
user space applications may need to clear authentication or
association state in some cases. Currently, this can be done with
deauth/disassoc command, but that ends up sending out Deauthentication
or Disassociation frame unnecessarily. Add a new nl80211 attribute to
allow this sending of the frame be skipped, but with all other
deauth/disassoc operations being completed.

Similar state change is also needed for IEEE 802.11r FT protocol in
the FT-over-DS case which does not use Authentication frame exchange
in a transition to another BSS. For this to work with cfg80211, an
authentication entry needs to be created for the target BSS without
sending out an Authentication frame. The nl80211 authentication
command can be used for this purpose, too, with the new attribute to
indicate that the command is only for changing local state. This
enables wpa_supplicant to complete FT-over-DS transition successfully.

Signed-off-by: Jouni Malinen <j@w1.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
include/linux/nl80211.h
include/net/cfg80211.h
net/mac80211/mlme.c
net/wireless/core.h
net/wireless/mlme.c
net/wireless/nl80211.c
net/wireless/sme.c