mac80211: use call_rcu() on sta deletion
authorEliad Peller <eliad@wizery.com>
Sun, 9 Sep 2012 11:43:51 +0000 (14:43 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 10 Sep 2012 10:44:17 +0000 (12:44 +0200)
commitb22cfcfcae5b2c1e9b43543b6a23e5ef517de8f8
treeb87ec8f76a6ccdd4d8d5ed9752d4bfedf3ea04c3
parente548c49e6dc6b08b59042930a2e90c69c13c9293
mac80211: use call_rcu() on sta deletion

mac80211 calls synchronize_rcu() on sta deletion,
which increase the roaming time significantly.

Convert it into a call_rcu() mechanism, in order
to avoid blocking. Since some of the cleanup
functions might sleep, schedule from the call_rcu
callback a new work that will do the actual cleanup.

In order to make sure the cleanup occurs before
the interface went down, flush local->workqueue
on ieee80211_do_stop().

Signed-off-by: Yoni Divinsky <yoni.divinsky@ti.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/iface.c
net/mac80211/sta_info.c
net/mac80211/sta_info.h