mac80211: optimise roaming time again

The last fixes re-added the RCU synchronize penalty
on roaming to fix the races. Split up sta_info_flush()
now to get rid of that again, and let managed mode
(and only it) delay the actual destruction.

Tested-by: Ben Greear <greearb@candelatech.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Johannes Berg
2012-12-13 23:49:02 +01:00
parent 09f4114e02
commit 051007d9e2
4 changed files with 47 additions and 17 deletions
+19 -1
View File
@@ -548,7 +548,25 @@ 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(struct ieee80211_sub_if_data *sdata);
int sta_info_flush_defer(struct ieee80211_sub_if_data *sdata);
void sta_info_flush_cleanup(struct ieee80211_sub_if_data *sdata);
/**
* sta_info_flush - flush matching STA entries from the STA table
*
* Returns the number of removed STA entries.
*
* @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);
sta_info_flush_cleanup(sdata);
return ret;
}
void sta_set_rate_info_tx(struct sta_info *sta,
const struct ieee80211_tx_rate *rate,
struct rate_info *rinfo);