aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/mesh.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211/mesh.c')
-rw-r--r--net/mac80211/mesh.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c
index 9e47725cc592..a0141f5ff184 100644
--- a/net/mac80211/mesh.c
+++ b/net/mac80211/mesh.c
@@ -449,6 +449,15 @@ void ieee80211_stop_mesh(struct ieee80211_sub_if_data *sdata)
449{ 449{
450 del_timer_sync(&sdata->u.mesh.housekeeping_timer); 450 del_timer_sync(&sdata->u.mesh.housekeeping_timer);
451 /* 451 /*
452 * If the timer fired while we waited for it, it will have
453 * requeued the work. Now the work will be running again
454 * but will not rearm the timer again because it checks
455 * whether the interface is running, which, at this point,
456 * it no longer is.
457 */
458 cancel_work_sync(&sdata->u.mesh.work);
459
460 /*
452 * When we get here, the interface is marked down. 461 * When we get here, the interface is marked down.
453 * Call synchronize_rcu() to wait for the RX path 462 * Call synchronize_rcu() to wait for the RX path
454 * should it be using the interface and enqueuing 463 * should it be using the interface and enqueuing