From: Rohan Dutta When the peer STA is created via SMD BSS Transition Preparation on the target AP MLD, indicate that the STA is created as part of SMD procedure unlike STA creation using typical association. This indication helps the drivers and lower layers to prepare the STA for handling ST Execution and datapath switch once the ST procedure is completed. Signed-off-by: Rohan Dutta Signed-off-by: Pooventhiran G --- include/net/cfg80211.h | 2 ++ include/uapi/linux/nl80211.h | 7 +++++++ net/wireless/nl80211.c | 3 +++ 3 files changed, 12 insertions(+) diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index bf33cf5366ef..75d0123fbb5d 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -1903,11 +1903,13 @@ struct cfg80211_ttlm_params { * @smd_sta: SMD-negotiated STA * @smd_identifier: SMD Identifier * @dl_data_fwd: MSDU forwarding supported + * @roam_sta: station was created via SMD BSS Transition procedure */ struct cfg80211_sta_smd_params { bool smd_sta; u8 smd_identifier[ETH_ALEN]; bool dl_data_fwd; + bool roam_sta; }; /** diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h index f1d8db31f17e..5e474fda2a49 100644 --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h @@ -3202,6 +3202,11 @@ enum nl80211_commands { * supports DL data forwarding within the SMD domain. * Used with %NL80211_CMD_NEW_STATION. * + * @NL80211_ATTR_SMD_ROAM_STA: Flag attribute indicating this station was + * created via SMD BSS Transition Preparation at the Target AP MLD (refer + * IEEE P802.11bn/D2.0, Aug 2026, subclause 37.16.6). + * This flag is carried in %NL80211_CMD_NEW_STATION. + * * @NUM_NL80211_ATTR: total number of nl80211_attrs available * @NL80211_ATTR_MAX: highest attribute number currently defined * @__NL80211_ATTR_AFTER_LAST: internal use @@ -3808,6 +3813,8 @@ enum nl80211_attrs { NL80211_ATTR_PEER_SMD_MAC_ADDR, NL80211_ATTR_PEER_SMD_DL_DATA_FORWARDING, + NL80211_ATTR_SMD_ROAM_STA, + /* add attributes here, update the policy in nl80211.c */ __NL80211_ATTR_AFTER_LAST, diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 0d20c2ab3d5e..7577eb31ff65 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -1117,6 +1117,7 @@ static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = { [NL80211_ATTR_PEER_SMD_ENABLED] = { .type = NLA_FLAG }, [NL80211_ATTR_PEER_SMD_MAC_ADDR] = NLA_POLICY_ETH_ADDR, [NL80211_ATTR_PEER_SMD_DL_DATA_FORWARDING] = { .type = NLA_FLAG }, + [NL80211_ATTR_SMD_ROAM_STA] = { .type = NLA_FLAG }, }; /* policy for the key attributes */ @@ -9289,6 +9290,8 @@ static int nl80211_set_station_smd(struct genl_info *info, params->smd_params.dl_data_fwd = !!info->attrs[NL80211_ATTR_PEER_SMD_DL_DATA_FORWARDING]; + params->smd_params.roam_sta = !!info->attrs[NL80211_ATTR_SMD_ROAM_STA]; + return 0; } -- 2.34.1