[PATCH v4 0/3] Improve roam scan strategy

Alexander Ganslandt <[email protected]> Fri, 12 Sep 2025 13:23:19 +0200
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 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 (3):
      util: add scan_freq_set_size function
      station: improve scan_freqs_order channel subsets
      station: improve roam scan strategy

 src/station.c | 367 +++++++++++++++++++++++++++++++---------------------------
 src/util.c    |  11 ++
 src/util.h    |   1 +
 3 files changed, 208 insertions(+), 171 deletions(-)
---
base-commit: 3760a49650b39edd623a85a2b9d51645b52d004a
change-id: 20250414-roam-scan-improvements-02116c7c4631

Best regards,
-- 
Alexander Ganslandt <[email protected]>