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:
+19
-1
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user