Re: [PATCH] Rescan on regulatory domain change

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxx>
---
  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 ]---

  	}

_______________________________________________
Hostap mailing list
Hostap@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/hostap




[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux