Search Linux Wireless

Re: [PATCH] mac80211: Only flush workqueue when last interface was removed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2008-07-03 at 19:02 +0200, Ivo van Doorn wrote:
> Currently the ieee80211_hw->workqueue is flushed each time
> an interface is being removed. However most scheduled work
> is not interface specific but device specific, for example things like
> periodic work for link tuners.
> 
> This patch will move the flush_workqueue() call to directly behind
> the call to ops->stop() to make sure the workqueue is only flushed
> when all interfaces are gone and there really shouldn't be any scheduled
> work in the drivers left.

Yeah I think that's what we always wanted.

> Signed-off-by: Ivo van Doorn <IvDoorn@xxxxxxxxx>

Acked-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>

> ---
> diff --git a/net/mac80211/main.c b/net/mac80211/main.c
> index 074f71a..577845e 100644
> --- a/net/mac80211/main.c
> +++ b/net/mac80211/main.c
> @@ -533,8 +533,6 @@ static int ieee80211_stop(struct net_device *dev)
>  				local->sta_hw_scanning = 0;
>  		}
>  
> -		flush_workqueue(local->hw.workqueue);
> -
>  		sdata->u.sta.flags &= ~IEEE80211_STA_PRIVACY_INVOKED;
>  		kfree(sdata->u.sta.extra_ie);
>  		sdata->u.sta.extra_ie = NULL;
> @@ -558,6 +556,8 @@ static int ieee80211_stop(struct net_device *dev)
>  
>  		ieee80211_led_radio(local, 0);
>  
> +		flush_workqueue(local->hw.workqueue);
> +
>  		tasklet_disable(&local->tx_pending_tasklet);
>  		tasklet_disable(&local->tasklet);
>  	}
> 

Attachment: signature.asc
Description: This is a digitally signed message part


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux