On Fri, Nov 23, 2018 at 01:34:54PM +0100, Stefan Sperling wrote:
> Every time we settle for the same AP after a background scan,
> a timeout value is increased to avoid repeated background scans
> in situations where no better AP is available.
> 
> The backoff currently increments in steps of half a second.
> This causes very frequent background scans for a few minutes
> after association to an AP with a weak signal. If my math is
> correct, we reach a backoff interval of one minute only after
> 120 background scans that found no new AP.
> 
> We could easily double or triple this backoff.
> With this diff, we back off by one more second each time we end
> up settling for the same AP. We could probably backoff even more,
> but I'd prefer to try a relatively small change, for now.

Would it make sense to use an exponential backoff with a maximum?
 
> Tested with an AP where iwn(4) reports -62dBm and triggers
> background scans most of the time.
> 
> ok?
> 
> Index: ieee80211_input.c
> ===================================================================
> RCS file: /cvs/src/sys/net80211/ieee80211_input.c,v
> retrieving revision 1.202
> diff -u -p -r1.202 ieee80211_input.c
> --- ieee80211_input.c 7 Aug 2018 18:13:14 -0000       1.202
> +++ ieee80211_input.c 23 Nov 2018 11:36:42 -0000
> @@ -276,7 +276,7 @@ ieee80211_input(struct ifnet *ifp, struc
>                           (ic->ic_flags & IEEE80211_F_BGSCAN) == 0 &&
>                           (ic->ic_flags & IEEE80211_F_DESBSSID) == 0)
>                               timeout_add_msec(&ic->ic_bgscan_timeout,
> -                                 500 * (ic->ic_bgscan_fail + 1));
> +                                 500 * (2 * (ic->ic_bgscan_fail + 1)));

Why not make this just 1000 * (ic->ic_bgscan_fail + 1)?

>               }
>       }
>  
> 
> 
> 

-- 
:wq Claudio

Reply via email to