Update current BSS level when signal change event occurs
When an EVENT_SIGNAL_CHANGE occurs the bgscan is informed about this change but the new RSSI value is not stored. In consequence, when roaming candidates are evaluated, the RSSI value of the current BSS used to compare is an old one obtained during the last scan rather than the new one given by the signal change event. This leads sometimes to bad decision when selecting a new BSS for roaming. This patch solves the issue by updating the current BSS level when receiving a signal change event in order to have a very up-to-date current signal value when choosing an new BSS. Signed-off-by: Matthieu Mauger <matthieux.mauger@intel.com>
This commit is contained in:
parent
f1609f119a
commit
71d77adb6d
2 changed files with 8 additions and 0 deletions
|
@ -137,4 +137,10 @@ static inline int bss_is_dmg(const struct wpa_bss *bss)
|
||||||
return bss->freq > 45000;
|
return bss->freq > 45000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void wpa_bss_update_level(struct wpa_bss *bss, int new_level)
|
||||||
|
{
|
||||||
|
if (bss != NULL && new_level < 0)
|
||||||
|
bss->level = new_level;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* BSS_H */
|
#endif /* BSS_H */
|
||||||
|
|
|
@ -3431,6 +3431,8 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
|
||||||
data->signal_change.current_signal,
|
data->signal_change.current_signal,
|
||||||
data->signal_change.current_noise,
|
data->signal_change.current_noise,
|
||||||
data->signal_change.current_txrate);
|
data->signal_change.current_txrate);
|
||||||
|
wpa_bss_update_level(wpa_s->current_bss,
|
||||||
|
data->signal_change.current_signal);
|
||||||
bgscan_notify_signal_change(
|
bgscan_notify_signal_change(
|
||||||
wpa_s, data->signal_change.above_threshold,
|
wpa_s, data->signal_change.above_threshold,
|
||||||
data->signal_change.current_signal,
|
data->signal_change.current_signal,
|
||||||
|
|
Loading…
Reference in a new issue