size_t eht_capab_len,
const struct ieee80211_he_6ghz_band_cap *he_6ghz_capab,
u32 flags, u8 qosinfo, u8 vht_opmode, int supp_p2p_ps,
- int set, const u8 *link_addr, bool mld_link_sta)
+ int set, const u8 *link_addr, bool mld_link_sta,
+ u16 eml_cap)
{
struct hostapd_sta_add_params params;
params.mld_link_id = hapd->mld_link_id;
params.mld_link_addr = link_addr;
params.mld_link_sta = mld_link_sta;
+ /* Copy EML capabilities of ML STA */
+ if (link_addr)
+ params.eml_cap = eml_cap;
}
#endif /* CONFIG_IEEE80211BE */
size_t eht_capab_len,
const struct ieee80211_he_6ghz_band_cap *he_6ghz_capab,
u32 flags, u8 qosinfo, u8 vht_opmode, int supp_p2p_ps,
- int set, const u8 *link_addr, bool mld_link_sta);
+ int set, const u8 *link_addr, bool mld_link_sta,
+ u16 eml_cap);
int hostapd_set_privacy(struct hostapd_data *hapd, int enabled);
int hostapd_set_generic_elem(struct hostapd_data *hapd, const u8 *elem,
size_t elem_len);
int set = 1;
const u8 *mld_link_addr = NULL;
bool mld_link_sta = false;
+ u16 eml_cap = 0;
#ifdef CONFIG_IEEE80211BE
if (ap_sta_is_mld(hapd, sta)) {
if (hapd->mld_link_id != sta->mld_assoc_link_id)
set = 0;
+ eml_cap = sta->mld_info.common_info.eml_capa;
}
#endif /* CONFIG_IEEE80211BE */
sta->he_6ghz_capab,
sta->flags | WLAN_STA_ASSOC, sta->qosinfo,
sta->vht_opmode, sta->p2p_ie ? 1 : 0,
- set, mld_link_addr, mld_link_sta)) {
+ set, mld_link_addr, mld_link_sta, eml_cap)) {
hostapd_logger(hapd, sta->addr,
HOSTAPD_MODULE_IEEE80211, HOSTAPD_LEVEL_NOTICE,
"Could not %s STA to kernel driver",
{
const u8 *mld_link_addr = NULL;
bool mld_link_sta = false;
+ u16 eml_cap = 0;
/*
* If a station that is already associated to the AP, is trying to
mld_link_sta = sta->mld_assoc_link_id != mld_link_id;
mld_link_addr = sta->mld_info.links[mld_link_id].peer_addr;
+ eml_cap = sta->mld_info.common_info.eml_capa;
/*
* In case the AP is affiliated with an AP MLD, we need to
sta->supported_rates_len,
0, NULL, NULL, NULL, 0, NULL, 0, NULL,
sta->flags, 0, 0, 0, 0,
- mld_link_addr, mld_link_sta)) {
+ mld_link_addr, mld_link_sta, eml_cap)) {
hostapd_logger(hapd, sta->addr,
HOSTAPD_MODULE_IEEE80211,
HOSTAPD_LEVEL_NOTICE,
bool mld_link_sta;
s8 mld_link_id;
const u8 *mld_link_addr;
+ u16 eml_cap;
};
struct mac_address {
goto fail;
}
+ /* Set EML capabilities of ML STA */
+ if (params->mld_link_addr && params->eml_cap) {
+ wpa_printf(MSG_DEBUG, " * eml_cap =%u",
+ params->eml_cap);
+ if (nla_put_u16(msg, NL80211_ATTR_EML_CAPABILITY,
+ params->eml_cap))
+ goto fail;
+ }
+
if (is_ap_interface(drv->nlmode) &&
nla_put_u8(msg, NL80211_ATTR_STA_SUPPORT_P2P_PS,
params->support_p2p_ps ?