diff options
author | Johannes Berg <johannes.berg@intel.com> | 2013-12-04 21:46:11 (GMT) |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-12-16 10:29:45 (GMT) |
commit | d34ba2168a3c10e7301cca06069c39865b4c3ec6 (patch) | |
tree | 709e9c81eba18202588852e39d66fcf893334451 /net/mac80211/sta_info.h | |
parent | a710c8160dd93e981163759aad754f758850273a (diff) | |
download | linux-d34ba2168a3c10e7301cca06069c39865b4c3ec6.tar.xz |
mac80211: don't delay station destruction
If we can assume that stations are never referenced by the
driver after sta_state returns (and this is true since the
previous iwlmvm patch and for all other drivers) then we
don't need to delay station destruction, and don't need to
play tricks with rcu_barrier() etc.
This should speed up some scenarios like hostapd shutdown.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/sta_info.h')
-rw-r--r-- | net/mac80211/sta_info.h | 27 |
1 files changed, 1 insertions, 26 deletions
diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h index 0218caf..9104f81 100644 --- a/net/mac80211/sta_info.h +++ b/net/mac80211/sta_info.h @@ -605,21 +605,6 @@ void sta_info_recalc_tim(struct sta_info *sta); void sta_info_init(struct ieee80211_local *local); void sta_info_stop(struct ieee80211_local *local); -int sta_info_flush_defer(struct ieee80211_sub_if_data *sdata); - -/** - * sta_info_flush_cleanup - flush the sta_info cleanup queue - * @sdata: the interface - * - * Flushes the sta_info cleanup queue for a given interface; - * this is necessary before the interface is removed or, for - * AP/mesh interfaces, before it is deconfigured. - * - * Note an rcu_barrier() must precede the function, after all - * stations have been flushed/removed to ensure the call_rcu() - * calls that add stations to the cleanup queue have completed. - */ -void sta_info_flush_cleanup(struct ieee80211_sub_if_data *sdata); /** * sta_info_flush - flush matching STA entries from the STA table @@ -628,15 +613,7 @@ void sta_info_flush_cleanup(struct ieee80211_sub_if_data *sdata); * * @sdata: sdata to remove all stations from */ -static inline int sta_info_flush(struct ieee80211_sub_if_data *sdata) -{ - int ret = sta_info_flush_defer(sdata); - - rcu_barrier(); - sta_info_flush_cleanup(sdata); - - return ret; -} +int sta_info_flush(struct ieee80211_sub_if_data *sdata); void sta_set_rate_info_tx(struct sta_info *sta, const struct ieee80211_tx_rate *rate, @@ -651,6 +628,4 @@ void ieee80211_sta_ps_deliver_wakeup(struct sta_info *sta); void ieee80211_sta_ps_deliver_poll_response(struct sta_info *sta); void ieee80211_sta_ps_deliver_uapsd(struct sta_info *sta); -void ieee80211_cleanup_sdata_stas(struct ieee80211_sub_if_data *sdata); - #endif /* STA_INFO_H */ |