EHT: Provide EHT capabilities in STA addition path
Add support for EHT capabilities in the addition of a new station entry to the driver. Signed-off-by: Aloka Dixit <quic_alokad@quicinc.com> Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
This commit is contained in:
parent
a6d1b4c46c
commit
f915d52dee
6 changed files with 36 additions and 1 deletions
|
@ -418,6 +418,8 @@ int hostapd_sta_add(struct hostapd_data *hapd,
|
|||
const struct ieee80211_vht_capabilities *vht_capab,
|
||||
const struct ieee80211_he_capabilities *he_capab,
|
||||
size_t he_capab_len,
|
||||
const struct ieee80211_eht_capabilities *eht_capab,
|
||||
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)
|
||||
|
@ -440,6 +442,8 @@ int hostapd_sta_add(struct hostapd_data *hapd,
|
|||
params.vht_capabilities = vht_capab;
|
||||
params.he_capab = he_capab;
|
||||
params.he_capab_len = he_capab_len;
|
||||
params.eht_capab = eht_capab;
|
||||
params.eht_capab_len = eht_capab_len;
|
||||
params.he_6ghz_capab = he_6ghz_capab;
|
||||
params.vht_opmode_enabled = !!(flags & WLAN_STA_VHT_OPMODE_ENABLED);
|
||||
params.vht_opmode = vht_opmode;
|
||||
|
|
|
@ -43,6 +43,8 @@ int hostapd_sta_add(struct hostapd_data *hapd,
|
|||
const struct ieee80211_vht_capabilities *vht_capab,
|
||||
const struct ieee80211_he_capabilities *he_capab,
|
||||
size_t he_capab_len,
|
||||
const struct ieee80211_eht_capabilities *eht_capab,
|
||||
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);
|
||||
|
|
|
@ -4936,6 +4936,7 @@ static int add_associated_sta(struct hostapd_data *hapd,
|
|||
struct ieee80211_ht_capabilities ht_cap;
|
||||
struct ieee80211_vht_capabilities vht_cap;
|
||||
struct ieee80211_he_capabilities he_cap;
|
||||
struct ieee80211_eht_capabilities eht_cap;
|
||||
int set = 1;
|
||||
|
||||
/*
|
||||
|
@ -4992,6 +4993,11 @@ static int add_associated_sta(struct hostapd_data *hapd,
|
|||
sta->he_capab_len);
|
||||
}
|
||||
#endif /* CONFIG_IEEE80211AX */
|
||||
#ifdef CONFIG_IEEE80211BE
|
||||
if (sta->flags & WLAN_STA_EHT)
|
||||
hostapd_get_eht_capab(hapd, sta->eht_capab, &eht_cap,
|
||||
sta->eht_capab_len);
|
||||
#endif /* CONFIG_IEEE80211BE */
|
||||
|
||||
/*
|
||||
* Add the station with forced WLAN_STA_ASSOC flag. The sta->flags
|
||||
|
@ -5005,6 +5011,8 @@ static int add_associated_sta(struct hostapd_data *hapd,
|
|||
sta->flags & WLAN_STA_VHT ? &vht_cap : NULL,
|
||||
sta->flags & WLAN_STA_HE ? &he_cap : NULL,
|
||||
sta->flags & WLAN_STA_HE ? sta->he_capab_len : 0,
|
||||
sta->flags & WLAN_STA_EHT ? &eht_cap : NULL,
|
||||
sta->flags & WLAN_STA_EHT ? sta->eht_capab_len : 0,
|
||||
sta->he_6ghz_capab,
|
||||
sta->flags | WLAN_STA_ASSOC, sta->qosinfo,
|
||||
sta->vht_opmode, sta->p2p_ie ? 1 : 0,
|
||||
|
|
|
@ -78,6 +78,10 @@ void hostapd_get_he_capab(struct hostapd_data *hapd,
|
|||
const struct ieee80211_he_capabilities *he_cap,
|
||||
struct ieee80211_he_capabilities *neg_he_cap,
|
||||
size_t he_capab_len);
|
||||
void hostapd_get_eht_capab(struct hostapd_data *hapd,
|
||||
const struct ieee80211_eht_capabilities *src,
|
||||
struct ieee80211_eht_capabilities *dest,
|
||||
size_t len);
|
||||
int hostapd_get_aid(struct hostapd_data *hapd, struct sta_info *sta);
|
||||
u16 copy_sta_ht_capab(struct hostapd_data *hapd, struct sta_info *sta,
|
||||
const u8 *ht_capab);
|
||||
|
|
|
@ -336,3 +336,20 @@ u16 copy_sta_eht_capab(struct hostapd_data *hapd, struct sta_info *sta,
|
|||
|
||||
return WLAN_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
void hostapd_get_eht_capab(struct hostapd_data *hapd,
|
||||
const struct ieee80211_eht_capabilities *src,
|
||||
struct ieee80211_eht_capabilities *dest,
|
||||
size_t len)
|
||||
{
|
||||
if (!src || !dest)
|
||||
return;
|
||||
|
||||
if (len > sizeof(*dest))
|
||||
len = sizeof(*dest);
|
||||
/* TODO: mask out unsupported features */
|
||||
|
||||
os_memset(dest, 0, sizeof(*dest));
|
||||
os_memcpy(dest, src, len);
|
||||
}
|
||||
|
|
|
@ -1553,7 +1553,7 @@ int ap_sta_re_add(struct hostapd_data *hapd, struct sta_info *sta)
|
|||
if (hostapd_sta_add(hapd, sta->addr, 0, 0,
|
||||
sta->supported_rates,
|
||||
sta->supported_rates_len,
|
||||
0, NULL, NULL, NULL, 0, NULL,
|
||||
0, NULL, NULL, NULL, 0, NULL, 0, NULL,
|
||||
sta->flags, 0, 0, 0, 0)) {
|
||||
hostapd_logger(hapd, sta->addr,
|
||||
HOSTAPD_MODULE_IEEE80211,
|
||||
|
|
Loading…
Reference in a new issue