[PATCH] Decrease cross-threshold roam difficulty
Matthew Wang
matthewmwang at chromium.org
Thu Dec 28 13:05:14 PST 2023
Please ignore this, I resent this as a series.
On Tue, Dec 26, 2023 at 6:52 PM Matthew Wang <matthewmwang at chromium.org> wrote:
>
> Decrease the roam difficulty when roaming across the short background
> scan threshold (i.e. when the current BSS RSSI is below the threshold
> and the selected BSS RSSI is above the threshold). This tends to happen
> in normal roaming scenarios when moving from the domain of one AP to
> the domain of another.
>
> Signed-off-by: Matthew Wang <matthewmwang at chromium.org>
> ---
> wpa_supplicant/bgscan_simple.c | 5 ++++-
> wpa_supplicant/events.c | 3 +++
> wpa_supplicant/wpa_supplicant_i.h | 1 +
> 3 files changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/wpa_supplicant/bgscan_simple.c b/wpa_supplicant/bgscan_simple.c
> index cac3049e3..a90cf86e5 100644
> --- a/wpa_supplicant/bgscan_simple.c
> +++ b/wpa_supplicant/bgscan_simple.c
> @@ -189,6 +189,7 @@ static void * bgscan_simple_init(struct wpa_supplicant *wpa_s,
> data->scan_interval = data->short_interval;
> data->max_short_scans = data->long_interval / data->short_interval + 1;
> if (data->signal_threshold) {
> + wpa_s->signal_threshold = data->signal_threshold;
> /* Poll for signal info to set initial scan interval */
> struct wpa_signal_info siginfo;
> if (wpa_drv_signal_poll(wpa_s, &siginfo) == 0 &&
> @@ -216,8 +217,10 @@ static void bgscan_simple_deinit(void *priv)
> {
> struct bgscan_simple_data *data = priv;
> eloop_cancel_timeout(bgscan_simple_timeout, data, NULL);
> - if (data->signal_threshold)
> + if (data->signal_threshold) {
> + data->wpa_s->signal_threshold = 0;
> wpa_drv_signal_monitor(data->wpa_s, 0, 0);
> + }
> os_free(data);
> }
>
> diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
> index 7bea64986..47169c181 100644
> --- a/wpa_supplicant/events.c
> +++ b/wpa_supplicant/events.c
> @@ -2284,6 +2284,9 @@ int wpa_supplicant_need_to_roam_within_ess(struct wpa_supplicant *wpa_s,
> min_diff -= 2;
> if (to_6ghz)
> min_diff -= 2;
> + if (wpa_s->signal_threshold && cur_level <= wpa_s->signal_threshold &&
> + sel_level > wpa_s->signal_threshold)
> + min_diff -= 2;
> diff = sel_level - cur_level;
> if (diff < min_diff) {
> wpa_dbg(wpa_s, MSG_DEBUG,
> diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h
> index b3f1cd1b4..86c25bd8d 100644
> --- a/wpa_supplicant/wpa_supplicant_i.h
> +++ b/wpa_supplicant/wpa_supplicant_i.h
> @@ -1191,6 +1191,7 @@ struct wpa_supplicant {
> struct wpa_ssid *bgscan_ssid;
> const struct bgscan_ops *bgscan;
> void *bgscan_priv;
> + int signal_threshold;
>
> const struct autoscan_ops *autoscan;
> struct wpa_driver_scan_params *autoscan_params;
> --
> 2.43.0.472.g3155946c3a-goog
>
More information about the Hostap
mailing list