[PATCH] Rescan on regulatory domain change
Wen Gong
quic_wgong at quicinc.com
Sun Feb 12 22:08:24 PST 2023
On 12/23/2021 10:33 AM, Nicolas Norvez wrote:
> On boot or when resuming after suspending, radios use the lowest common
> denominator across all geographies to know which channels/bands to scan.
> Because of that, the first scan does not detects APs that are present in
> bands that are not allowed everywhere, like the 6GHz band.
>
> With this patch, supplicant triggers a new scan when the regulatory
> domain has changed to include channels and bands that were not enabled
> previously. It allows the station to connect to WiFi 6E APs faster on
> resume in case the only known APs are in the 6GHz band. Without the
> patch the station doesn't find any known APs after the first scan, then
> it has to wait longer for the next scheduled scan.
> If the first scan does contain known APs, the second scan is canceled
> either way.
>
> Signed-off-by: Nicolas Norvez <norvez at chromium.org>
> ---
> wpa_supplicant/events.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
> index f55e1846e..59cfe638b 100644
> --- a/wpa_supplicant/events.c
> +++ b/wpa_supplicant/events.c
> @@ -4331,6 +4331,14 @@ void wpa_supplicant_update_channel_list(struct wpa_supplicant *wpa_s,
> wpa_dbg(ifs, MSG_DEBUG,
> "Channel list changed - restart sched_scan");
> wpas_scan_restart_sched_scan(ifs);
> + } else {
> + /*
> + * Look for APs in bands/channels (e.g. 6GHz) that were
> + * previously disabled.
> + */
> + wpa_dbg(ifs, MSG_DEBUG,
> + "Channel list changed - restart scan");
> + wpa_supplicant_req_new_scan(ifs, 0, 0);
> }
This trigger many scan running of station when disconnect from an AP by
receive NL80211_CMD_REG_CHANGE/NL80211_CMD_REG_BEACON_HINT from kernel.
nl80211_send_reg_change_event() called by Call trace:
restore_regulatory_settings+0x4d8/0x59c [cfg80211
8babfb4ec47d35731b5091c1748b3bfa6ea15e61]
regulatory_hint_disconnect+0x48/0x160 [cfg80211
8babfb4ec47d35731b5091c1748b3bfa6ea15e61]
disconnect_work+0xfc/0x120 [cfg80211
8babfb4ec47d35731b5091c1748b3bfa6ea15e61]
process_one_work+0x140/0x510
worker_thread+0x12c/0x2d8
kthread+0x13c/0x154
ret_from_fork+0x10/0x30
---[ end trace 6cd968eb06b83601 ]---
Call trace:
nl80211_send_beacon_hint_event+0x74/0x1d0 [cfg80211
8babfb4ec47d35731b5091c1748b3bfa6ea15e61]
handle_reg_beacon+0x1f0/0x270 [cfg80211
8babfb4ec47d35731b5091c1748b3bfa6ea15e61]
reg_todo+0x55c/0x5dc [cfg80211 8babfb4ec47d35731b5091c1748b3bfa6ea15e61]
process_one_work+0x140/0x510
worker_thread+0x12c/0x2d8
kthread+0x13c/0x154
ret_from_fork+0x10/0x30
---[ end trace 6cd968eb06b83604 ]---
> }
>
More information about the Hostap
mailing list