[RFC 00/30] wpa_supplicant: Station support for Seamless Mobility Domain (SMD)
Ilan Peer
ilan.peer at intel.com
Wed Oct 21 06:43:18 PDT 2026
This RFC series adds initial station mode support for Seamless Mobility
Domain (SMD) Transition (ST), as defined in Draft IEEE P802.11bn D2.0.
When a non-AP MLD roams between AP MLDs that belong to the same SMD, the
transition is done using the ST preparation and ST execution exchanges
(UHR Link Reconfiguration frames), instead of a new (re)association.
The security association established with the current AP MLD is maintained.
When the SMD uses per-AP MLD PTK mode, a new PTK is derived for the target
AP MLD based on an ECDH exchange done as part of the ST preparation,
and the ST frames are protected with a MIC.
The series also introduced some testing options to allow testing the ST
preparation and execution separately etc.
The series is organized as follows:
- Patches 1-4: Definitions for the SMD Information element, the SMD BSS
Transition Parameters element, the UHR Link Reconfiguration frames and
the SMD related status codes, including element parsing.
- Patches 5-9: Key derivation support: SMD Identifier in the PMK to PTK
derivation, SMD_KDK derivation, SMD Information element KDE parsing,
the SMD MIC calculation and the longer PTK in wlantest.
- Patch 10: Driver interface for the ST prepare/execute/abandon commands,
the corresponding events and the SMD driver capability flags.
- Patches 11-18: BSS and WPA state machine support: store the SMD
information of a BSS, configure the SMD state, advertise SMD support in
the RSNXE (including EPPKE), take SMD into account in the PTK
derivation for IEEE 802.1X in Authentication frames and support the
per-AP MLD PTK and the target AP MLD TK.
- Patch 19: The station SMD implementation (wpa_supplicant/smd.c), built
with the new CONFIG_SMD build option.
- Patches 20-24: SMD support in PASN and in encrypted (Re)Association
processing, installing the target AP MLD TK before ST execution and the
group keys after it, and syncing the link state from the ST events and
indicating CTRL-EVENT-SMD-TRANSITION-DONE.
- Patches 25-29: Testing options (separate ST prepare/execute/abandon
through the control interface, invalid ST requests and DL draining
TIDs), tracking SMD preparations per target AP MLD, and setting
ssid_verified after an encrypted association.
- Patch 30: driver_nl80211 support for the ST commands and events.
Notes:
- SMD is only supported when SME is handled by wpa_supplicant
(CONFIG_SME and WPA_DRIVER_FLAGS_SME). Driver-based SME is not
supported.
- Only the station side is covered. hostapd is only updated for the
changed common APIs.
- The driver_nl80211 implementation (patch 30) relies on nl80211 API
changes that are expected for the kernel but are not available there
yet.
- driver_nl80211 does not yet indicate SMD support in the driver
capabilities, as this needs to be based on the capabilities reported
by the kernel.
Ilan Peer (30):
defs: Add definitions for SMD Information Element
defs: Add definition for SMD BSS Transition Parameters Element
defs: Add definitions for UHR SMD
defs: Add UHR status codes
WPA: Extend PMK to PTK derivation to also derive a SMD_KDK
common: Extend wpa_auth_802_1x_pmk_to_ptk()
WPA: Add SMD Information Element to KDE parsing
WPA: Add function to calculate SMD MIC
wlantest: Allow longer PTK
driver: Add skeleton for ST command and events
BSS: Parse SMD Information Element and store the data
WPA: Add support for configuring SMD state
WPA: Store the AP SMD Information Element
WPA: Handle SMD configuration in WPA SM
WPA: Update 802.1X over authentication frames PTK derivation
SME: Indicate support for SMD when using EPPKE
WPA: Support station mode SMD per-AP MLD PTK
WPA: SMD: Add support for installing a target AP MLD TK
wpa_supplicant: Add basic support for SMD
PASN: Extend PTK derivation to support SMD
SMD: Install target AP MLD TK before ST execution
WPA: SMD: Support installing group keys
EPPKE: Support SMD in Encrypted association processing
SMD: Use event link info and notify when the transition is done
SMD: Add testing options to do ST prepare/execute separately
wpa_supplicant: Set ssid_verified after encrypted association
wpa_supplicant: SMD: Add a testing option to generate invalid ST
requests
wpa_supplicant: Track SMD preparations per target AP MLD
SMD: testing option to request DL draining for specific TIDs
nl80211: Support SMD commands and events
src/ap/ieee802_11.c | 6 +-
src/ap/wpa_auth.c | 2 +-
src/common/common_module_tests.c | 5 +-
src/common/ieee802_11_common.c | 39 +
src/common/ieee802_11_common.h | 4 +
src/common/ieee802_11_defs.h | 155 ++++
src/common/wpa_common.c | 183 ++++-
src/common/wpa_common.h | 49 +-
src/common/wpa_ctrl.h | 4 +
src/drivers/driver.h | 203 ++++++
src/drivers/driver_common.c | 4 +
src/drivers/driver_nl80211.c | 181 +++++
src/drivers/driver_nl80211_event.c | 188 +++++
src/pasn/pasn_common.h | 13 +
src/pasn/pasn_initiator.c | 4 +-
src/pasn/pasn_responder.c | 4 +-
src/rsn_supp/wpa.c | 344 ++++++++-
src/rsn_supp/wpa.h | 28 +-
src/rsn_supp/wpa_i.h | 2 +
src/rsn_supp/wpa_ie.c | 3 +
tests/hwsim/example-wpa_supplicant.config | 1 +
wlantest/rx_eapol.c | 2 +-
wlantest/wlantest.c | 2 +-
wpa_supplicant/Makefile | 8 +
wpa_supplicant/bss.c | 53 ++
wpa_supplicant/bss.h | 9 +
wpa_supplicant/ctrl_iface.c | 36 +
wpa_supplicant/defconfig | 4 +
wpa_supplicant/driver_i.h | 28 +
wpa_supplicant/events.c | 156 +++-
wpa_supplicant/smd.c | 823 ++++++++++++++++++++++
wpa_supplicant/sme.c | 42 +-
wpa_supplicant/wpa_cli.c | 26 +
wpa_supplicant/wpa_supplicant.c | 19 +-
wpa_supplicant/wpa_supplicant_i.h | 144 ++++
wpa_supplicant/wpas_glue.c | 5 +
36 files changed, 2700 insertions(+), 79 deletions(-)
create mode 100644 wpa_supplicant/smd.c
--
2.55.0
More information about the Hostap
mailing list