hostapd: Pass VHT capabilities to driver wrapper
Signed-hostap: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
89b800d726
commit
a9a1d0f08a
6 changed files with 25 additions and 0 deletions
|
@ -338,6 +338,7 @@ int hostapd_sta_add(struct hostapd_data *hapd,
|
|||
const u8 *supp_rates, size_t supp_rates_len,
|
||||
u16 listen_interval,
|
||||
const struct ieee80211_ht_capabilities *ht_capab,
|
||||
const struct ieee80211_vht_capabilities *vht_capab,
|
||||
u32 flags, u8 qosinfo)
|
||||
{
|
||||
struct hostapd_sta_add_params params;
|
||||
|
@ -355,6 +356,7 @@ int hostapd_sta_add(struct hostapd_data *hapd,
|
|||
params.supp_rates_len = supp_rates_len;
|
||||
params.listen_interval = listen_interval;
|
||||
params.ht_capabilities = ht_capab;
|
||||
params.vht_capabilities = vht_capab;
|
||||
params.flags = hostapd_sta_flags_to_drv(flags);
|
||||
params.qosinfo = qosinfo;
|
||||
return hapd->driver->sta_add(hapd->drv_priv, ¶ms);
|
||||
|
|
|
@ -13,6 +13,7 @@ enum wpa_driver_if_type;
|
|||
struct wpa_bss_params;
|
||||
struct wpa_driver_scan_params;
|
||||
struct ieee80211_ht_capabilities;
|
||||
struct ieee80211_vht_capabilities;
|
||||
|
||||
u32 hostapd_sta_flags_to_drv(u32 flags);
|
||||
int hostapd_build_ap_extra_ies(struct hostapd_data *hapd,
|
||||
|
@ -37,6 +38,7 @@ int hostapd_sta_add(struct hostapd_data *hapd,
|
|||
const u8 *supp_rates, size_t supp_rates_len,
|
||||
u16 listen_interval,
|
||||
const struct ieee80211_ht_capabilities *ht_capab,
|
||||
const struct ieee80211_vht_capabilities *vht_capab,
|
||||
u32 flags, u8 qosinfo);
|
||||
int hostapd_set_privacy(struct hostapd_data *hapd, int enabled);
|
||||
int hostapd_set_generic_elem(struct hostapd_data *hapd, const u8 *elem,
|
||||
|
|
|
@ -1708,6 +1708,7 @@ static void handle_assoc_cb(struct hostapd_data *hapd,
|
|||
struct sta_info *sta;
|
||||
int new_assoc = 1;
|
||||
struct ieee80211_ht_capabilities ht_cap;
|
||||
struct ieee80211_vht_capabilities vht_cap;
|
||||
|
||||
if (len < IEEE80211_HDRLEN + (reassoc ? sizeof(mgmt->u.reassoc_resp) :
|
||||
sizeof(mgmt->u.assoc_resp))) {
|
||||
|
@ -1780,11 +1781,16 @@ static void handle_assoc_cb(struct hostapd_data *hapd,
|
|||
if (sta->flags & WLAN_STA_HT)
|
||||
hostapd_get_ht_capab(hapd, sta->ht_capabilities, &ht_cap);
|
||||
#endif /* CONFIG_IEEE80211N */
|
||||
#ifdef CONFIG_IEEE80211AC
|
||||
if (sta->flags & WLAN_STA_VHT)
|
||||
hostapd_get_vht_capab(hapd, sta->vht_capabilities, &vht_cap);
|
||||
#endif /* CONFIG_IEEE80211AC */
|
||||
|
||||
if (hostapd_sta_add(hapd, sta->addr, sta->aid, sta->capability,
|
||||
sta->supported_rates, sta->supported_rates_len,
|
||||
sta->listen_interval,
|
||||
sta->flags & WLAN_STA_HT ? &ht_cap : NULL,
|
||||
sta->flags & WLAN_STA_VHT ? &vht_cap : NULL,
|
||||
sta->flags, sta->qosinfo)) {
|
||||
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
|
||||
HOSTAPD_LEVEL_NOTICE,
|
||||
|
|
|
@ -53,6 +53,9 @@ void ieee802_11_send_sa_query_req(struct hostapd_data *hapd,
|
|||
void hostapd_get_ht_capab(struct hostapd_data *hapd,
|
||||
struct ieee80211_ht_capabilities *ht_cap,
|
||||
struct ieee80211_ht_capabilities *neg_ht_cap);
|
||||
void hostapd_get_vht_capab(struct hostapd_data *hapd,
|
||||
struct ieee80211_vht_capabilities *vht_cap,
|
||||
struct ieee80211_vht_capabilities *neg_vht_cap);
|
||||
u16 copy_sta_ht_capab(struct hostapd_data *hapd, struct sta_info *sta,
|
||||
const u8 *ht_capab, size_t ht_capab_len);
|
||||
void update_ht_state(struct hostapd_data *hapd, struct sta_info *sta);
|
||||
|
|
|
@ -108,3 +108,14 @@ u16 copy_sta_vht_capab(struct hostapd_data *hapd, struct sta_info *sta,
|
|||
|
||||
return WLAN_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
void hostapd_get_vht_capab(struct hostapd_data *hapd,
|
||||
struct ieee80211_vht_capabilities *vht_cap,
|
||||
struct ieee80211_vht_capabilities *neg_vht_cap)
|
||||
{
|
||||
if (vht_cap == NULL)
|
||||
return;
|
||||
os_memcpy(neg_vht_cap, vht_cap, sizeof(*neg_vht_cap));
|
||||
|
||||
/* TODO: mask own capabilities, like get_ht_capab() */
|
||||
}
|
||||
|
|
|
@ -898,6 +898,7 @@ struct hostapd_sta_add_params {
|
|||
size_t supp_rates_len;
|
||||
u16 listen_interval;
|
||||
const struct ieee80211_ht_capabilities *ht_capabilities;
|
||||
const struct ieee80211_vht_capabilities *vht_capabilities;
|
||||
u32 flags; /* bitmask of WPA_STA_* flags */
|
||||
int set; /* Set STA parameters instead of add */
|
||||
u8 qosinfo;
|
||||
|
|
Loading…
Reference in a new issue