From: John Crispin <john@xxxxxxxxxxx> Send MBSSID and EMA configuration parameters to kernel. Signed-off-by: John Crispin <john@xxxxxxxxxxx> Co-developed-by: Aloka Dixit <quic_alokad@xxxxxxxxxxx> Signed-off-by: Aloka Dixit <quic_alokad@xxxxxxxxxxx> --- v2: Added 'return -1' instead of 'goto fail' in nl80211_mbssid(). src/drivers/driver_nl80211.c | 52 ++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 0127a6be28ed..d092f26fe713 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -4535,6 +4535,55 @@ static int nl80211_unsol_bcast_probe_resp(struct i802_bss *bss, #endif /* CONFIG_IEEE80211AX */ +static int nl80211_mbssid(struct nl_msg *msg, + struct wpa_driver_ap_params *params) +{ + struct nlattr *config, *elems; + int ifidx; + + if (!params->mbssid_tx_iface) + return 0; + + config = nla_nest_start(msg, NL80211_ATTR_MBSSID_CONFIG); + if (!config) + return -1; + + nla_put_u8(msg, NL80211_MBSSID_CONFIG_ATTR_INDEX, params->mbssid_index); + if (params->mbssid_tx_iface) { + ifidx = if_nametoindex(params->mbssid_tx_iface); + if (ifidx <= 0) + return -1; + nla_put_u32(msg, + NL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX, + ifidx); + } + + if (params->ema) + nla_put_flag(msg, NL80211_MBSSID_CONFIG_ATTR_EMA); + + nla_nest_end(msg, config); + + if (params->mbssid_elem_count && params->mbssid_elem_len && + params->mbssid_elem_offset && *params->mbssid_elem_offset) { + u8 i, **offs = params->mbssid_elem_offset; + + elems = nla_nest_start(msg, NL80211_ATTR_MBSSID_ELEMS); + if (!elems) + return -1; + + for (i = 0; i < params->mbssid_elem_count - 1; i++) + nla_put(msg, i + 1, offs[i + 1] - offs[i], offs[i]); + + nla_put(msg, i + 1, + *offs + params->mbssid_elem_len - offs[i], + offs[i]); + + nla_nest_end(msg, elems); + } + return 0; +} + + static int wpa_driver_nl80211_set_ap(void *priv, struct wpa_driver_ap_params *params) { @@ -4829,6 +4878,9 @@ static int wpa_driver_nl80211_set_ap(void *priv, if (params->unsol_bcast_probe_resp_interval && nl80211_unsol_bcast_probe_resp(bss, msg, params) < 0) goto fail; + + if (nl80211_mbssid(msg, params) < 0) + goto fail; #endif /* CONFIG_IEEE80211AX */ #ifdef CONFIG_SAE -- 2.31.1 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap