iwlwifi: mvm: use pre-RCU-sync sta removal operation
authorJohannes Berg <johannes.berg@intel.com>
Wed, 4 Dec 2013 21:39:17 +0000 (22:39 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 16 Dec 2013 10:29:44 +0000 (11:29 +0100)
commit1ddbbb0c83de82599b1baf14bf6bb69a774d4fc7
treef40e872724a1d8a4de63f75e2e7d357adacc99a8
parent6a9d1b91f34df1935bc0ad98114801a44db0f98c
iwlwifi: mvm: use pre-RCU-sync sta removal operation

iwlmvm relies on the current mac80211 behaviour of allowing
station pointers to be valid for an RCU grace period after
returning from the sta_state() callback. To optimise these
cases, this behaviour is going away, so make the driver use
the new sta_pre_rcu_remove() method to clear the pointer in
the fw_id_to_mac_id[] array.

Since this may happen while the station is still present in
the firmware, don't set the pointer to NULL but to -ENOENT
to mark this particular case. In client mode, the station
is kept even longer (until marking the MAC as unassociated)
so the drain flow must take this new behavior into account.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/iwlwifi/mvm/debugfs-vif.c
drivers/net/wireless/iwlwifi/mvm/mac80211.c
drivers/net/wireless/iwlwifi/mvm/sta.c