From d9eef5508138ed949f2baa6bfc3c81371c508310 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= Date: Tue, 13 Jan 2026 23:32:17 +0100 Subject: [PATCH] Wi-Fi: Add possibility to control roaming between APs Useful if you have multiple APs on one SSID. --- doc/wifi.md | 61 +++++++++++++++++++++++++ src/confd/yang/confd/infix-if-wifi.yang | 53 +++++++++++++++++++++ 2 files changed, 114 insertions(+) diff --git a/doc/wifi.md b/doc/wifi.md index b670803b..6db907b1 100644 --- a/doc/wifi.md +++ b/doc/wifi.md @@ -486,6 +486,67 @@ radio settings, and `show interface` to see all active AP interfaces. > AP and Station modes cannot be mixed on the same radio. All virtual interfaces > on a radio must be the same mode (all APs or all Stations). +## Fast Roaming Between Access Points + +Fast roaming enables seamless client handoff between access points through +802.11k/r/v standards. These features can be enabled individually based on +your requirements. + +### 802.11r - Fast BSS Transition + +Enable 802.11r for fast handoff (<50ms) between APs with the same SSID: + +``` +admin@example:/config/interface/wifi0/> set wifi access-point roaming enable-80211r true +admin@example:/config/interface/wifi0/> set wifi access-point roaming mobility-domain 4f57 +``` + +**Requirements:** +- All APs in roaming group must have **identical** SSID +- All APs must have **identical** passphrase (same keystore secret) +- All APs must use the **same mobility-domain** identifier + +The mobility-domain defaults to `4f57` if not specified. + +### 802.11k - Radio Resource Management + +Enable 802.11k for client neighbor discovery and better roaming decisions: + +``` +admin@example:/config/interface/wifi0/> set wifi access-point roaming enable-80211k true +``` + +Enables neighbor reports and beacon reports, allowing clients to discover +nearby APs before roaming. + +### 802.11v - BSS Transition Management + +Enable 802.11v for network-assisted roaming: + +``` +admin@example:/config/interface/wifi0/> set wifi access-point roaming enable-80211v true +``` + +Allows APs to suggest better APs to clients, improving roaming decisions. + +### Recommended Configuration + +For optimal roaming experience, enable all three features: + +``` +admin@example:/config/interface/wifi0/> set wifi access-point roaming enable-80211k true +admin@example:/config/interface/wifi0/> set wifi access-point roaming enable-80211r true +admin@example:/config/interface/wifi0/> set wifi access-point roaming enable-80211v true +admin@example:/config/interface/wifi0/> set wifi access-point roaming mobility-domain 4f57 +``` + +Repeat for all APs that should participate in the roaming group. + +> [!NOTE] +> Not all client devices support all roaming features. Modern devices typically +> support 802.11k/r/v, but older devices may only support basic roaming without +> fast transition. + ### AP as Bridge Port WiFi AP interfaces can be added to bridges to integrate wireless devices diff --git a/src/confd/yang/confd/infix-if-wifi.yang b/src/confd/yang/confd/infix-if-wifi.yang index 1508cd39..9f97120e 100644 --- a/src/confd/yang/confd/infix-if-wifi.yang +++ b/src/confd/yang/confd/infix-if-wifi.yang @@ -421,6 +421,59 @@ submodule infix-if-wifi { } } + container roaming { + description + "Fast roaming and seamless handoff configuration. + + 802.11k: Radio Resource Management (neighbor discovery) + 802.11r: Fast BSS Transition (fast handoff) + 802.11v: BSS Transition Management (network-assisted roaming)"; + + leaf enable-80211k { + type boolean; + description + "Enable 802.11k Radio Resource Management. + + Allows clients to discover neighboring APs for better + roaming decisions. Enables: + - Neighbor reports + - Beacon reports"; + } + + leaf enable-80211r { + type boolean; + description + "Enable 802.11r Fast BSS Transition. + + Reduces handoff latency from ~1s to <50ms through + pre-authentication. Required for seamless roaming."; + } + + leaf enable-80211v { + type boolean; + description + "Enable 802.11v BSS Transition Management. + + Allows APs to suggest better APs to clients, improving + network-assisted roaming decisions."; + } + + leaf mobility-domain { + when "../enable-80211r = 'true'"; + type string { + pattern '[0-9a-fA-F]{4}'; + } + default "4f57"; + description + "802.11r Mobility Domain identifier (4 hex digits). + + All APs that clients should roam between MUST use the + same mobility domain ID. + + Only applicable when 802.11r is enabled."; + } + } + /* Operational state */ container stations {