On Thu, Jun 08, 2023 at 04:54:01PM -0700, greearb@xxxxxxxxxxxxxxx wrote: > Allow doing X bss_transition_mgmt_query calls before falling back to > scan. > > Example format to do 4 btm before attempting a scan: bgscan="simple:30:-65:300:4" > diff --git a/wpa_supplicant/bgscan_simple.c b/wpa_supplicant/bgscan_simple.c > @@ -36,6 +40,22 @@ static void bgscan_simple_timeout(void *eloop_ctx, void *timeout_ctx) > + if (data->use_wnm_query && !wpa_s->conf->disable_btm) { wnm_query is a misleading name since WNM includes much more than just BTM.. btm_query would be clearer. This should check whether the current AP supports BTM before deciding to use BTM queries instead of scans. > + int mod; > + > + /* try wnm x times, scan on x + 1 */ > + data->scan_action_count++; > + mod = data->scan_action_count % (data->use_wnm_query + 1); > + if (mod < data->use_wnm_query) { > + wpa_printf(MSG_DEBUG, "bgscan simple: Send bss transition mgt query %d/%d", > + mod, data->use_wnm_query); > + if (wnm_send_bss_transition_mgmt_query(wpa_s, 6 /* better AP found */, NULL, 0)) > + wpa_printf(MSG_DEBUG, "bgscan simple: Failed send bss transition mgt query"); > + else > + goto scan_ok; > + } > + } This success case would skip starting of the scan and this timeout on failure: > os_memset(¶ms, 0, sizeof(params)); > params.num_ssids = 1; > params.ssids[0].ssid = data->ssid->ssid; > @@ -58,6 +78,7 @@ static void bgscan_simple_timeout(void *eloop_ctx, void *timeout_ctx) > eloop_register_timeout(data->scan_interval, 0, > bgscan_simple_timeout, data, NULL); > } else { > + scan_ok: > if (data->scan_interval == data->short_interval) { > data->short_scan_count++; > if (data->short_scan_count >= data->max_short_scans) { And instead, would not leave any new trigger to get bgscan_simple_timeout called again. In other words, this would leave bgscan stuck not doing anything. The BTM query case should schedule a new timeout to cover cases where BTM request is not received and also to cover cases where BTM request is received but no transition is performed. -- Jouni Malinen PGP id EFC895FA _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap