[PATCH v5 0/8] Improve roam scan strategy
Alexander Ganslandt <[email protected]> Fri, 28 Nov 2025 12:54:21 +0100
| Newsgroups | dev.linux.lists.iwd |
|---|---|
| Message-ID | <[email protected]> |
I recommend looking at the diff in a side-by-side viewer, the patch files are looking far more complicated than they actually are... This is attempt #2 at improving roaming. This removes the previous timestamp-based approach and instead uses a simple list to keep track of which frequencies have been scanned in the current roam attempt. The main idea is to make station_start_roam() the central point for all roaming. When some function wants to trigger a roam, it calls station_start_roam() that takes care of all scan logic. In my own testing I've noticed a big improvement in connection stability when running around a building. There might be edge-cases I've missed though, as I don't have a setup to test all different functionality. Happy to hear your thoughts on this approach and if it can be improved. Thanks, Alexander --- Changes in v5: - Added full-roam-scan event when all frequencies have been scanned - Added handling for AP directed roaming, it should now use the same "roam loop" approach as other types of roaming - Fixed autotest issues - Link to v4: https://lore.kernel.org/r/[email protected] Changes in v4: - Fixed small build error introduced in previous revision - Link to v3: https://lore.kernel.org/r/[email protected] Changes in v3: - Fixed CI issues - Fixed unnecessary braces as per James's comment - Fixed bug where 6GHz "set" variable wasn't freed in all cases in station_fill_scan_freq_subsets() - Added logic to handle case where all subsets are empty in station_fill_scan_freq_subsets() - Link to v2: https://lore.kernel.org/r/[email protected] Changes in v2: - Removed code that tracked scan frequency timestamps - Added code to track which frequencies have been scanned - Link to v1: https://lore.kernel.org/r/[email protected] --- Alexander Ganslandt (8): util: add scan_freq_set_size function station: improve scan_freqs_order channel subsets station: improve roam scan strategy auto-t: Increase event timeout for test_full_scan auto-t: Fix tests relying on full-roam-scan auto-t: Call default instead of reload in teardown auto-t: Fix test_ignore_candidate_list_quirk auto-t: Disable MAC randomization for a few tests autotests/testAP-no-support/main.conf | 2 + autotests/testAPRoam/bad_neighbor_report_test.py | 19 +- autotests/testBasicServiceSet/main.conf | 2 + autotests/testDPP/main.conf | 2 + autotests/testDisconnectByAP/main.conf | 2 + autotests/util/iwd.py | 13 +- src/station.c | 387 ++++++++++++----------- src/util.c | 11 + src/util.h | 1 + 9 files changed, 242 insertions(+), 197 deletions(-) --- base-commit: 3760a49650b39edd623a85a2b9d51645b52d004a change-id: 20250414-roam-scan-improvements-02116c7c4631 Best regards, -- Alexander Ganslandt <[email protected]>