Re: [PATCH] supplicant: Tune auto-roaming based on scan results, allow configuring thresholds.

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

 



On Thu, Jan 02, 2020 at 07:41:42AM -0800, Ben Greear wrote:
> On 01/02/2020 12:38 AM, Jouni Malinen wrote:
> > I don't want to expose this type of very specific parameters in
> > configuration file since this can result in expectation of those values
> > being maintained in the future and that resulting in additional
> > constraints on the implementation. If something needs to be
> > configurable, I'd prefer to consider some higher level value to indicate
> > how aggressive roaming should be and then automatically convert from
> > that to internal parameters for the algorithm so that the design can be
> > changed without having to touch the definition of the configuration
> > parameter.
> 
> I'm guessing the vast majority of users never touch the config file
> themselves...it is auto-generated by something at a higher level.  Maybe
> let the higher level thing deal with the simplified setting value
> and let it tune the more specific values in supplicant?

I'd consider that "higher level thing" the same as "users", i.e., it is
whatever is generating the configuration for wpa_supplicant. I don't
want to expose configuration parameters for low level details if those
details may change completely based on how the internal wpa_supplicant
implementation is changed.

> > > diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
> > > @@ -1778,8 +1784,17 @@ static int wpa_supplicant_need_to_roam(struct wpa_supplicant *wpa_s,
> > >  			min_diff = 3;
> > >  		else if (current_bss->level < -70)
> > >  			min_diff = 4;
> > > -		else
> > > +		else if (current_bss->level < -60)
> > >  			min_diff = 5;
> > > +		else if (current_bss->level < -50)
> > > +			min_diff = 8;
> > > +		else if (current_bss->level < -40)
> > > +			min_diff = 10;
> > > +		else if (current_bss->level < -30)
> > > +			min_diff = 20;
> > > +		else
> > > +			min_diff = 30;
> > 
> > I'm not sure this is really needed. There is now a cur_snr > GREAT_SNR
> > check that will in practice skip roaming in cases where the signal level
> > from the current BSS is sufficiently good.
> 
> Based on my current understanding of things, I'd change the logic above
> to keep the min_diff larger even at very weak signals since roaming is so
> disruptive to user experience, and RSSI is likely to
> fluctuate more than a few db.

This is proposing changes for cur_level >= -60. GREAT_SNR = 25 which
would mean that these min_diff = 8, 10, 20, or 30 cases would not really
have any impact to the current behavior since GREAT_SNR overrides (skip
roam) anyway.

> Does the current code keep the station from roaming back and forth when there
> are two APs at about -70?

Roaming back and forth should be significantly reduced. Roaming to the
one of these APs that have "significantly better" throughput estimate
should happen in one direction. Signal level based allowance for roaming
would depend on the noise floor since -70 would be pretty close to
GREAT_SNR, but not necessarily above it in environment where noise floor
is high.

-- 
Jouni Malinen                                            PGP id EFC895FA

_______________________________________________
Hostap mailing list
Hostap@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/hostap



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

  Powered by Linux