From e2e8217522d8a75cf9b113206c4c65f390a82c14 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Mon, 13 Jul 2009 13:23:39 +0200 Subject: [PATCH] --- yaml --- r: 159099 b: refs/heads/master c: 0e2b6286805c419d28a4c1e19e3a121af7449b20 h: refs/heads/master i: 159097: d3f5b559a94bf5005477dbea6bd10ca72f7a8f4d 159095: da5abcecc7e00321c7afd458ea185aee340b5d9a v: v3 --- [refs] | 2 +- trunk/net/mac80211/iface.c | 8 +++++--- trunk/net/mac80211/mlme.c | 3 +++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index cb257fe813c9..27e81b94dbbc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ec96cfd8215af1cda016837efb266409164e3a30 +refs/heads/master: 0e2b6286805c419d28a4c1e19e3a121af7449b20 diff --git a/trunk/net/mac80211/iface.c b/trunk/net/mac80211/iface.c index 4839a2d97a3b..090aa5a47182 100644 --- a/trunk/net/mac80211/iface.c +++ b/trunk/net/mac80211/iface.c @@ -449,16 +449,18 @@ static int ieee80211_stop(struct net_device *dev) case NL80211_IFTYPE_STATION: del_timer_sync(&sdata->u.mgd.chswitch_timer); del_timer_sync(&sdata->u.mgd.timer); + del_timer_sync(&sdata->u.mgd.conn_mon_timer); + del_timer_sync(&sdata->u.mgd.bcn_mon_timer); /* - * If the timer fired while we waited for it, it will have - * requeued the work. Now the work will be running again + * If any of the timers fired while we waited for it, it will + * have queued its work. Now the work will be running again * but will not rearm the timer again because it checks * whether the interface is running, which, at this point, * it no longer is. */ cancel_work_sync(&sdata->u.mgd.work); cancel_work_sync(&sdata->u.mgd.chswitch_work); - + cancel_work_sync(&sdata->u.mgd.monitor_work); cancel_work_sync(&sdata->u.mgd.beacon_loss_work); /* diff --git a/trunk/net/mac80211/mlme.c b/trunk/net/mac80211/mlme.c index 18dad229344c..e3b3156aca9e 100644 --- a/trunk/net/mac80211/mlme.c +++ b/trunk/net/mac80211/mlme.c @@ -1163,6 +1163,9 @@ static void ieee80211_mgd_probe_ap(struct ieee80211_sub_if_data *sdata, const u8 *ssid; bool already = false; + if (!netif_running(sdata->dev)) + return; + mutex_lock(&ifmgd->mtx); if (!ifmgd->associated)