policy: don't track roam_scan_done
authorDavid Bauer <mail@david-bauer.net>
Wed, 22 Dec 2021 21:28:49 +0000 (22:28 +0100)
committerDavid Bauer <mail@david-bauer.net>
Sun, 23 Jan 2022 19:55:41 +0000 (20:55 +0100)
commit022635c9bd5da96a1a003b7a50e040216abcf007
tree6d661922ef8212a46c0346a6c81ac7f9d3fcd908
parent742236f30b4a16f2390bcbd956e99569ff75a45e
policy: don't track roam_scan_done

Don't determine a finished client scan based on whether the current node
has seen a beacon or not.

This works surprisingly bad on 5 GHz nodes, as clients may refuse to
perform active scanning on this frequency band. In case the clients does
refuse to scan the 5 GHz band but scans the 2.4 GHz band actively, we
might have a good indication about a better node on this band at least.

However, as the roam state-machine requires to have seen a probe request
from the client to direct him to a better node, thi process will not
continue, which either ends the node in being kicked due to exceeding
the number of max tries or the scan cooldown to kick in.

The solution to this is fairly simple: Don't track the roam_scan_done
state but instead just determine a better candidate after the scan
interval finished.

To ensure the indicated signal levels are as recent as 2 *
scan-interval, add a max_age parameter to find_better_candidate.

Signed-off-by: David Bauer <mail@david-bauer.net>
policy.c
sta.c
usteer.h