ubus: set scan duration to roam scan interval

Some clients seem to ignore scan requests with unreasonably high
measurement durations. This was observed with a Google Pixel 4A as well
as a Xiaomi Mi 10T.

Advertise a scan duration which closely matches the roam scan-interval.
This triggers scans more reliably with the aformentioned devices.

Signed-off-by: David Bauer <mail@david-bauer.net>
This commit is contained in:
David Bauer
2021-10-18 13:30:18 +02:00
parent b4eb49e3fe
commit 7bf79a237c

2
ubus.c
View File

@@ -557,7 +557,7 @@ int usteer_ubus_trigger_client_scan(struct sta_info *si)
blob_buf_init(&b, 0);
blobmsg_printf(&b, "addr", MAC_ADDR_FMT, MAC_ADDR_DATA(si->sta->addr));
blobmsg_add_u32(&b, "mode", BEACON_MEASUREMENT_ACTIVE);
blobmsg_add_u32(&b, "duration", 65535);
blobmsg_add_u32(&b, "duration", config.roam_scan_interval / 100);
blobmsg_add_u32(&b, "channel", 0);
blobmsg_add_u32(&b, "op_class", si->scan_band ? 1 : 12);
return ubus_invoke(ubus_ctx, ln->obj_id, "rrm_beacon_req", b.head, NULL, 0, 100);