problems with reassociation decisions / scan results table
Kurt Bodiker
kurt.bodiker
Wed Jan 8 10:06:00 PST 2014
All of our APs are configured with the same, hidden SSID. A probe
response from the current AP is never updated on subsequent scans once
a connection with the AP is made. This leads to the case where a
reassociation with an AP that has better signal strength is not made
because the comparison between current_bss->level and
selected_bss->level in events.c is made against old data.
I'm not sure the best place to fix this. What I did was modify the
bgscan_simple_notify_scan() method in bgscan_simple.c by bringing in
the wpa_signal_info structure, which contains the current power
levels, and overwriting the value containined in
wpa_s->current_bss->level. Here is what I added:
187 // adding this to manipulate current_bss->level
188 struct wpa_signal_info si;
189 int ret;
190 ret = wpa_drv_signal_poll(wpa_s, &si);
191 if (ret)
192 return -1; //rethink value we are
returning if we keep si
193
194 wpa_s->current_bss->level = si.current_signal;
195 // done
I know this only works if the supplicant is using bgscan:simple, but
it keeps the scan_results table updated whenever a scan is done and
reassociation decisions are made on updated data. I know there has to
be a more upstream place to make the change, I just can't find it.
I am currently running a compiled wpa_supplicant from the git
repository, 0fab9ce, but I have seen this behavior in previous
versions, so nothing new.
Kurt
More information about the Hostap
mailing list