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