Search Linux Wireless

Re: [PATCH 2/7] mac80211: advance the state machine immediately if no delay is needed

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

 



On Thu, 2009-07-23 at 12:13 +0200, Helmut Schaa wrote:
> Instead of queueing the scan work again without delay just process the
> next state immediately.
>     
> Signed-off-by: Helmut Schaa <helmut.schaa@xxxxxxxxxxxxxx>

Acked-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>

> ---
> 
>  net/mac80211/scan.c |   24 +++++++++++++++---------
>  1 files changed, 15 insertions(+), 9 deletions(-)
> 
> diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c
> index 71500f1..db122e4 100644
> --- a/net/mac80211/scan.c
> +++ b/net/mac80211/scan.c
> @@ -587,15 +587,21 @@ void ieee80211_scan_work(struct work_struct *work)
>  		return;
>  	}
>  
> -	switch (local->scan_state) {
> -	case SCAN_SET_CHANNEL:
> -		if (ieee80211_scan_state_set_channel(local, &next_delay))
> -			return;
> -		break;
> -	case SCAN_SEND_PROBE:
> -		ieee80211_scan_state_send_probe(local, &next_delay);
> -		break;
> -	}
> +	/*
> +	 * as long as no delay is required advance immediately
> +	 * without scheduling a new work
> +	 */
> +	do {
> +		switch (local->scan_state) {
> +		case SCAN_SET_CHANNEL:
> +			if (ieee80211_scan_state_set_channel(local, &next_delay))
> +				return;
> +			break;
> +		case SCAN_SEND_PROBE:
> +			ieee80211_scan_state_send_probe(local, &next_delay);
> +			break;
> +		}
> +	} while (next_delay == 0);
>  
>  	queue_delayed_work(local->hw.workqueue, &local->scan_work,
>  			   next_delay);
> 
> 

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