[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