[PATCH] Avoid unnecessary triggering of rescans

Dan Williams dcbw
Fri Mar 7 17:19:28 PST 2008


On Fri, 2008-03-07 at 15:28 -0800, Sam Leffler wrote:
> Dan Williams wrote:
> > On Fri, 2008-03-07 at 10:11 -0800, Sam Leffler wrote:
> >   
> >> Dan Williams wrote:
> >>     
> >>> On Fri, 2008-03-07 at 09:04 +0200, Jouni Malinen wrote:
> >>>   
> >>>       
> >>>> On Wed, Feb 27, 2008 at 05:53:52PM +0100, Helmut Schaa wrote:
> >>>>
> >>>>     
> >>>>         
> >>>>> The setup here is a bit complex, I have multiple hidden APs with the same 
> >>>>> ESSID around.
> >>>>>
> >>>>> Once wpa_supplicant gets the scan-results (not being the scan initiator) it 
> >>>>> tries to find a suitable AP. If it finds the one you're currently associated 
> >>>>> with it drops the message "Already associated..." and does not do anything 
> >>>>> else.
> >>>>>       
> >>>>>           
> >>>> That is the expected behavior for processing unsolicited scan results.
> >>>>
> >>>>     
> >>>>         
> >>>>> Otherwise it starts a new scan. Once it starts a scan for a specific ESSID it 
> >>>>> will get the currently associated AP but in my case there are even more APs 
> >>>>> which match the ESSID and wpa_supplicant will start associating with the 
> >>>>> first matching AP.
> >>>>>       
> >>>>>           
> >>>> This is also expected. If the scan results do not include the current
> >>>> AP, wpa_supplicant assumes that the AP is not available anymore and
> >>>> tries to find another AP to use. I would like to make sure all drivers
> >>>> return the currently associated AP in scan results always regardless of
> >>>> the scan type. This information is needed, e.g., for WPA security
> >>>> validation.
> >>>>     
> >>>>         
> >>> _Definitely_.  This should be required of all drivers.
> >>>   
> >>>       
> >> Actually I very much disagree with this requirement.  Scan results 
> >> should reflect the actual set of AP's found while scanning and not 
> >> include arbitrarily defined results.  What should be done instead is to 
> >> treat the scan results as a cache and time out entries.  Doing this 
> >> correctly will cause the current AP to be included w/o polluting the 
> >> results.
> >>     
> >
> > Cached scan results + timeout is what happens in every driver I touch.
> > Orinoco, airo, libertas were done by me, and ipw2x00 and others work
> > this way too.
> >
> > However, if the card is associated with an access point, _why_ would it
> > not always be reported in the scan results???  It's not being
> > "arbitrarily defined", because the card is still associated with the AP,
> > and thus the AP definitely exists, or the card should have issued a
> > disconnection event.  If the firmware isn't including the associated AP
> > in it's scan result list, the firmware sucks rocks.
> >   
> 
> If you do something like a background scan you may find on return to the 
> home channel that your ap has moved but you may not recognize this until 
> after you have dispatched the scan results.  You are mixing a policy 
> (include the current associated AP even if it was not seen in a scan) 
> with a mechanism; this will get you in trouble.

True; I do handle this in NM by never removing the associated BSSID from
the internal NM scan list, but of course wpa_supplicant has it's own
scan list.  Are you suggesting that the policy of never removing the
associated BSSID should be in the supplicant and not the driver?

Dan

> The real problem is that wpa_supplicant has a model for state changes 
> and scanning that is designed to work with a wide variety of drivers.   
> To do this it makes certain requirements of the underlying code to 
> compensate.
> 
>     Sam
> 




More information about the Hostap mailing list