diff options
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r-- | net/mac80211/mlme.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index ffc47c81a161..809fb9160899 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -2594,6 +2594,13 @@ void ieee80211_sta_work(struct work_struct *work) | |||
2594 | } | 2594 | } |
2595 | } | 2595 | } |
2596 | 2596 | ||
2597 | static void ieee80211_restart_sta_timer(struct ieee80211_sub_if_data *sdata) | ||
2598 | { | ||
2599 | if (sdata->vif.type == IEEE80211_IF_TYPE_STA || | ||
2600 | ieee80211_vif_is_mesh(&sdata->vif)) | ||
2601 | ieee80211_sta_timer((unsigned long)sdata); | ||
2602 | } | ||
2603 | |||
2597 | void ieee80211_mlme_notify_scan_completed(struct ieee80211_local *local) | 2604 | void ieee80211_mlme_notify_scan_completed(struct ieee80211_local *local) |
2598 | { | 2605 | { |
2599 | struct ieee80211_sub_if_data *sdata = local->scan_sdata; | 2606 | struct ieee80211_sub_if_data *sdata = local->scan_sdata; |
@@ -2606,4 +2613,10 @@ void ieee80211_mlme_notify_scan_completed(struct ieee80211_local *local) | |||
2606 | !ieee80211_sta_active_ibss(sdata))) | 2613 | !ieee80211_sta_active_ibss(sdata))) |
2607 | ieee80211_sta_find_ibss(sdata, ifsta); | 2614 | ieee80211_sta_find_ibss(sdata, ifsta); |
2608 | } | 2615 | } |
2616 | |||
2617 | /* Restart STA timers */ | ||
2618 | rcu_read_lock(); | ||
2619 | list_for_each_entry_rcu(sdata, &local->interfaces, list) | ||
2620 | ieee80211_restart_sta_timer(sdata); | ||
2621 | rcu_read_unlock(); | ||
2609 | } | 2622 | } |