ubus: set scan duration to roam scan interval
authorDavid Bauer <mail@david-bauer.net>
Mon, 18 Oct 2021 11:30:18 +0000 (13:30 +0200)
committerDavid Bauer <mail@david-bauer.net>
Thu, 25 Nov 2021 22:20:18 +0000 (23:20 +0100)
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>
ubus.c

diff --git a/ubus.c b/ubus.c
index fabc1a678dc8b364cb4c8a4b96240d712e088156..7b4ce10182f47c1a7b0b2eea82a6a4ae85623514 100644 (file)
--- a/ubus.c
+++ b/ubus.c
@@ -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);