mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2024-11-28 18:28:23 -05:00
Remove CONFIG_IEEE80211N build option
Hardcoded CONFIG_IEEE80211N to be included to clean up implementation. More or less all new devices support IEEE 802.11n (HT) and there is not much need for being able to remove that functionality from the build. Included this unconditionally to get rid of one more build options and to keep things simpler. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
640d59942b
commit
f3bcd69603
@ -281,10 +281,6 @@ L_CFLAGS += -DCONFIG_WNM -DCONFIG_WNM_AP
|
|||||||
OBJS += src/ap/wnm_ap.c
|
OBJS += src/ap/wnm_ap.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_IEEE80211N
|
|
||||||
L_CFLAGS += -DCONFIG_IEEE80211N
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef CONFIG_IEEE80211AC
|
ifdef CONFIG_IEEE80211AC
|
||||||
L_CFLAGS += -DCONFIG_IEEE80211AC
|
L_CFLAGS += -DCONFIG_IEEE80211AC
|
||||||
endif
|
endif
|
||||||
@ -999,9 +995,7 @@ OBJS += src/ap/hw_features.c
|
|||||||
OBJS += src/ap/dfs.c
|
OBJS += src/ap/dfs.c
|
||||||
L_CFLAGS += -DNEED_AP_MLME
|
L_CFLAGS += -DNEED_AP_MLME
|
||||||
endif
|
endif
|
||||||
ifdef CONFIG_IEEE80211N
|
|
||||||
OBJS += src/ap/ieee802_11_ht.c
|
OBJS += src/ap/ieee802_11_ht.c
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef CONFIG_IEEE80211AC
|
ifdef CONFIG_IEEE80211AC
|
||||||
OBJS += src/ap/ieee802_11_vht.c
|
OBJS += src/ap/ieee802_11_vht.c
|
||||||
|
@ -331,10 +331,6 @@ CFLAGS += -DCONFIG_WNM -DCONFIG_WNM_AP
|
|||||||
OBJS += ../src/ap/wnm_ap.o
|
OBJS += ../src/ap/wnm_ap.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_IEEE80211N
|
|
||||||
CFLAGS += -DCONFIG_IEEE80211N
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef CONFIG_IEEE80211AC
|
ifdef CONFIG_IEEE80211AC
|
||||||
CFLAGS += -DCONFIG_IEEE80211AC
|
CFLAGS += -DCONFIG_IEEE80211AC
|
||||||
endif
|
endif
|
||||||
@ -1155,9 +1151,7 @@ OBJS += ../src/ap/hw_features.o
|
|||||||
OBJS += ../src/ap/dfs.o
|
OBJS += ../src/ap/dfs.o
|
||||||
CFLAGS += -DNEED_AP_MLME
|
CFLAGS += -DNEED_AP_MLME
|
||||||
endif
|
endif
|
||||||
ifdef CONFIG_IEEE80211N
|
|
||||||
OBJS += ../src/ap/ieee802_11_ht.o
|
OBJS += ../src/ap/ieee802_11_ht.o
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef CONFIG_IEEE80211AC
|
ifdef CONFIG_IEEE80211AC
|
||||||
OBJS += ../src/ap/ieee802_11_vht.o
|
OBJS += ../src/ap/ieee802_11_vht.o
|
||||||
|
@ -125,9 +125,6 @@ CONFIG_IPV6=y
|
|||||||
# the IEEE 802.11 Management capability (e.g., FreeBSD/net80211)
|
# the IEEE 802.11 Management capability (e.g., FreeBSD/net80211)
|
||||||
#CONFIG_DRIVER_RADIUS_ACL=y
|
#CONFIG_DRIVER_RADIUS_ACL=y
|
||||||
|
|
||||||
# IEEE 802.11n (High Throughput) support
|
|
||||||
CONFIG_IEEE80211N=y
|
|
||||||
|
|
||||||
# Remove debugging code that is printing out debug messages to stdout.
|
# Remove debugging code that is printing out debug messages to stdout.
|
||||||
# This can be used to reduce the size of the hostapd considerably if debugging
|
# This can be used to reduce the size of the hostapd considerably if debugging
|
||||||
# code is not needed.
|
# code is not needed.
|
||||||
|
@ -1151,7 +1151,6 @@ static int add_r1kh(struct hostapd_bss_config *bss, char *value)
|
|||||||
#endif /* CONFIG_IEEE80211R_AP */
|
#endif /* CONFIG_IEEE80211R_AP */
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
static int hostapd_config_ht_capab(struct hostapd_config *conf,
|
static int hostapd_config_ht_capab(struct hostapd_config *conf,
|
||||||
const char *capab)
|
const char *capab)
|
||||||
{
|
{
|
||||||
@ -1204,7 +1203,6 @@ static int hostapd_config_ht_capab(struct hostapd_config *conf,
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211AC
|
#ifdef CONFIG_IEEE80211AC
|
||||||
@ -3422,7 +3420,6 @@ static int hostapd_config_fill(struct hostapd_config *conf,
|
|||||||
if (bss->ocv && !bss->ieee80211w)
|
if (bss->ocv && !bss->ieee80211w)
|
||||||
bss->ieee80211w = 1;
|
bss->ieee80211w = 1;
|
||||||
#endif /* CONFIG_OCV */
|
#endif /* CONFIG_OCV */
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
} else if (os_strcmp(buf, "ieee80211n") == 0) {
|
} else if (os_strcmp(buf, "ieee80211n") == 0) {
|
||||||
conf->ieee80211n = atoi(pos);
|
conf->ieee80211n = atoi(pos);
|
||||||
} else if (os_strcmp(buf, "ht_capab") == 0) {
|
} else if (os_strcmp(buf, "ht_capab") == 0) {
|
||||||
@ -3435,7 +3432,6 @@ static int hostapd_config_fill(struct hostapd_config *conf,
|
|||||||
conf->require_ht = atoi(pos);
|
conf->require_ht = atoi(pos);
|
||||||
} else if (os_strcmp(buf, "obss_interval") == 0) {
|
} else if (os_strcmp(buf, "obss_interval") == 0) {
|
||||||
conf->obss_interval = atoi(pos);
|
conf->obss_interval = atoi(pos);
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
#ifdef CONFIG_IEEE80211AC
|
#ifdef CONFIG_IEEE80211AC
|
||||||
} else if (os_strcmp(buf, "ieee80211ac") == 0) {
|
} else if (os_strcmp(buf, "ieee80211ac") == 0) {
|
||||||
conf->ieee80211ac = atoi(pos);
|
conf->ieee80211ac = atoi(pos);
|
||||||
|
@ -148,9 +148,6 @@ CONFIG_IPV6=y
|
|||||||
# the IEEE 802.11 Management capability (e.g., FreeBSD/net80211)
|
# the IEEE 802.11 Management capability (e.g., FreeBSD/net80211)
|
||||||
#CONFIG_DRIVER_RADIUS_ACL=y
|
#CONFIG_DRIVER_RADIUS_ACL=y
|
||||||
|
|
||||||
# IEEE 802.11n (High Throughput) support
|
|
||||||
#CONFIG_IEEE80211N=y
|
|
||||||
|
|
||||||
# Wireless Network Management (IEEE Std 802.11v-2011)
|
# Wireless Network Management (IEEE Std 802.11v-2011)
|
||||||
# Note: This is experimental and not complete implementation.
|
# Note: This is experimental and not complete implementation.
|
||||||
#CONFIG_WNM=y
|
#CONFIG_WNM=y
|
||||||
|
@ -1169,7 +1169,6 @@ static int hostapd_config_check_bss(struct hostapd_bss_config *bss,
|
|||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211R_AP */
|
#endif /* CONFIG_IEEE80211R_AP */
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
if (full_config && conf->ieee80211n &&
|
if (full_config && conf->ieee80211n &&
|
||||||
conf->hw_mode == HOSTAPD_MODE_IEEE80211B) {
|
conf->hw_mode == HOSTAPD_MODE_IEEE80211B) {
|
||||||
bss->disable_11n = 1;
|
bss->disable_11n = 1;
|
||||||
@ -1194,7 +1193,6 @@ static int hostapd_config_check_bss(struct hostapd_bss_config *bss,
|
|||||||
"requires CCMP/GCMP to be enabled, disabling HT "
|
"requires CCMP/GCMP to be enabled, disabling HT "
|
||||||
"capabilities");
|
"capabilities");
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211AC
|
#ifdef CONFIG_IEEE80211AC
|
||||||
if (full_config && conf->ieee80211ac &&
|
if (full_config && conf->ieee80211ac &&
|
||||||
|
@ -228,7 +228,6 @@ void ap_list_process_beacon(struct hostapd_iface *iface,
|
|||||||
set_beacon++;
|
set_beacon++;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
if (!iface->olbc_ht && !ap->ht_support &&
|
if (!iface->olbc_ht && !ap->ht_support &&
|
||||||
(ap->channel == 0 ||
|
(ap->channel == 0 ||
|
||||||
ap->channel == iface->conf->channel ||
|
ap->channel == iface->conf->channel ||
|
||||||
@ -241,7 +240,6 @@ void ap_list_process_beacon(struct hostapd_iface *iface,
|
|||||||
MAC2STR(ap->addr), ap->channel);
|
MAC2STR(ap->addr), ap->channel);
|
||||||
set_beacon++;
|
set_beacon++;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
|
|
||||||
if (set_beacon)
|
if (set_beacon)
|
||||||
ieee802_11_update_beacons(iface);
|
ieee802_11_update_beacons(iface);
|
||||||
@ -285,14 +283,12 @@ void ap_list_timer(struct hostapd_iface *iface)
|
|||||||
iface->olbc = 0;
|
iface->olbc = 0;
|
||||||
set_beacon++;
|
set_beacon++;
|
||||||
}
|
}
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
if (!olbc_ht && iface->olbc_ht) {
|
if (!olbc_ht && iface->olbc_ht) {
|
||||||
wpa_printf(MSG_DEBUG, "OLBC HT not detected anymore");
|
wpa_printf(MSG_DEBUG, "OLBC HT not detected anymore");
|
||||||
iface->olbc_ht = 0;
|
iface->olbc_ht = 0;
|
||||||
hostapd_ht_operation_update(iface);
|
hostapd_ht_operation_update(iface);
|
||||||
set_beacon++;
|
set_beacon++;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (set_beacon)
|
if (set_beacon)
|
||||||
|
@ -525,14 +525,12 @@ static u8 * hostapd_gen_probe_resp(struct hostapd_data *hapd,
|
|||||||
|
|
||||||
pos = hostapd_eid_supported_op_classes(hapd, pos);
|
pos = hostapd_eid_supported_op_classes(hapd, pos);
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
/* Secondary Channel Offset element */
|
/* Secondary Channel Offset element */
|
||||||
/* TODO: The standard doesn't specify a position for this element. */
|
/* TODO: The standard doesn't specify a position for this element. */
|
||||||
pos = hostapd_eid_secondary_channel(hapd, pos);
|
pos = hostapd_eid_secondary_channel(hapd, pos);
|
||||||
|
|
||||||
pos = hostapd_eid_ht_capabilities(hapd, pos);
|
pos = hostapd_eid_ht_capabilities(hapd, pos);
|
||||||
pos = hostapd_eid_ht_operation(hapd, pos);
|
pos = hostapd_eid_ht_operation(hapd, pos);
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
|
|
||||||
pos = hostapd_eid_ext_capab(hapd, pos);
|
pos = hostapd_eid_ext_capab(hapd, pos);
|
||||||
|
|
||||||
@ -1245,14 +1243,12 @@ int ieee802_11_build_ap_params(struct hostapd_data *hapd,
|
|||||||
|
|
||||||
tailpos = hostapd_eid_supported_op_classes(hapd, tailpos);
|
tailpos = hostapd_eid_supported_op_classes(hapd, tailpos);
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
/* Secondary Channel Offset element */
|
/* Secondary Channel Offset element */
|
||||||
/* TODO: The standard doesn't specify a position for this element. */
|
/* TODO: The standard doesn't specify a position for this element. */
|
||||||
tailpos = hostapd_eid_secondary_channel(hapd, tailpos);
|
tailpos = hostapd_eid_secondary_channel(hapd, tailpos);
|
||||||
|
|
||||||
tailpos = hostapd_eid_ht_capabilities(hapd, tailpos);
|
tailpos = hostapd_eid_ht_capabilities(hapd, tailpos);
|
||||||
tailpos = hostapd_eid_ht_operation(hapd, tailpos);
|
tailpos = hostapd_eid_ht_operation(hapd, tailpos);
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
|
|
||||||
tailpos = hostapd_eid_ext_capab(hapd, tailpos);
|
tailpos = hostapd_eid_ext_capab(hapd, tailpos);
|
||||||
|
|
||||||
|
@ -345,7 +345,6 @@ static int hostapd_ctrl_iface_sta_mib(struct hostapd_data *hapd,
|
|||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211AC */
|
#endif /* CONFIG_IEEE80211AC */
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
if ((sta->flags & WLAN_STA_HT) && sta->ht_capabilities) {
|
if ((sta->flags & WLAN_STA_HT) && sta->ht_capabilities) {
|
||||||
res = os_snprintf(buf + len, buflen - len,
|
res = os_snprintf(buf + len, buflen - len,
|
||||||
"ht_caps_info=0x%04x\n",
|
"ht_caps_info=0x%04x\n",
|
||||||
@ -354,7 +353,6 @@ static int hostapd_ctrl_iface_sta_mib(struct hostapd_data *hapd,
|
|||||||
if (!os_snprintf_error(buflen - len, res))
|
if (!os_snprintf_error(buflen - len, res))
|
||||||
len += res;
|
len += res;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
|
|
||||||
if (sta->ext_capability &&
|
if (sta->ext_capability &&
|
||||||
buflen - len > (unsigned) (11 + 2 * sta->ext_capability[0])) {
|
buflen - len > (unsigned) (11 + 2 * sta->ext_capability[0])) {
|
||||||
|
@ -220,7 +220,6 @@ int hostapd_notif_assoc(struct hostapd_data *hapd, const u8 *addr,
|
|||||||
}
|
}
|
||||||
#endif /* CONFIG_P2P */
|
#endif /* CONFIG_P2P */
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
#ifdef NEED_AP_MLME
|
#ifdef NEED_AP_MLME
|
||||||
if (elems.ht_capabilities &&
|
if (elems.ht_capabilities &&
|
||||||
(hapd->iface->conf->ht_capab &
|
(hapd->iface->conf->ht_capab &
|
||||||
@ -234,7 +233,6 @@ int hostapd_notif_assoc(struct hostapd_data *hapd, const u8 *addr,
|
|||||||
ht40_intolerant_add(hapd->iface, sta);
|
ht40_intolerant_add(hapd->iface, sta);
|
||||||
}
|
}
|
||||||
#endif /* NEED_AP_MLME */
|
#endif /* NEED_AP_MLME */
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
|
|
||||||
#ifdef CONFIG_INTERWORKING
|
#ifdef CONFIG_INTERWORKING
|
||||||
if (elems.ext_capab && elems.ext_capab_len > 4) {
|
if (elems.ext_capab && elems.ext_capab_len > 4) {
|
||||||
|
@ -481,11 +481,9 @@ static void sta_track_deinit(struct hostapd_iface *iface)
|
|||||||
static void hostapd_cleanup_iface_partial(struct hostapd_iface *iface)
|
static void hostapd_cleanup_iface_partial(struct hostapd_iface *iface)
|
||||||
{
|
{
|
||||||
wpa_printf(MSG_DEBUG, "%s(%p)", __func__, iface);
|
wpa_printf(MSG_DEBUG, "%s(%p)", __func__, iface);
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
#ifdef NEED_AP_MLME
|
#ifdef NEED_AP_MLME
|
||||||
hostapd_stop_setup_timers(iface);
|
hostapd_stop_setup_timers(iface);
|
||||||
#endif /* NEED_AP_MLME */
|
#endif /* NEED_AP_MLME */
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
if (iface->current_mode)
|
if (iface->current_mode)
|
||||||
acs_cleanup(iface);
|
acs_cleanup(iface);
|
||||||
hostapd_free_hw_features(iface->hw_features, iface->num_hw_features);
|
hostapd_free_hw_features(iface->hw_features, iface->num_hw_features);
|
||||||
@ -2349,12 +2347,10 @@ void hostapd_interface_deinit(struct hostapd_iface *iface)
|
|||||||
hostapd_bss_deinit(iface->bss[j]);
|
hostapd_bss_deinit(iface->bss[j]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
#ifdef NEED_AP_MLME
|
#ifdef NEED_AP_MLME
|
||||||
hostapd_stop_setup_timers(iface);
|
hostapd_stop_setup_timers(iface);
|
||||||
eloop_cancel_timeout(ap_ht2040_timeout, iface, NULL);
|
eloop_cancel_timeout(ap_ht2040_timeout, iface, NULL);
|
||||||
#endif /* NEED_AP_MLME */
|
#endif /* NEED_AP_MLME */
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -224,7 +224,6 @@ int hostapd_prepare_rates(struct hostapd_iface *iface,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
static int ieee80211n_allowed_ht40_channel_pair(struct hostapd_iface *iface)
|
static int ieee80211n_allowed_ht40_channel_pair(struct hostapd_iface *iface)
|
||||||
{
|
{
|
||||||
int pri_freq, sec_freq;
|
int pri_freq, sec_freq;
|
||||||
@ -667,12 +666,9 @@ static int ieee80211ax_supported_he_capab(struct hostapd_iface *iface)
|
|||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211AX */
|
#endif /* CONFIG_IEEE80211AX */
|
||||||
|
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
|
|
||||||
|
|
||||||
int hostapd_check_ht_capab(struct hostapd_iface *iface)
|
int hostapd_check_ht_capab(struct hostapd_iface *iface)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (is_6ghz_freq(iface->freq))
|
if (is_6ghz_freq(iface->freq))
|
||||||
@ -705,7 +701,6 @@ int hostapd_check_ht_capab(struct hostapd_iface *iface)
|
|||||||
return ret;
|
return ret;
|
||||||
if (!ieee80211n_allowed_ht40_channel_pair(iface))
|
if (!ieee80211n_allowed_ht40_channel_pair(iface))
|
||||||
return -1;
|
return -1;
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -3136,7 +3136,6 @@ static u16 check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta,
|
|||||||
if (resp != WLAN_STATUS_SUCCESS)
|
if (resp != WLAN_STATUS_SUCCESS)
|
||||||
return resp;
|
return resp;
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
resp = copy_sta_ht_capab(hapd, sta, elems.ht_capabilities);
|
resp = copy_sta_ht_capab(hapd, sta, elems.ht_capabilities);
|
||||||
if (resp != WLAN_STATUS_SUCCESS)
|
if (resp != WLAN_STATUS_SUCCESS)
|
||||||
return resp;
|
return resp;
|
||||||
@ -3147,7 +3146,6 @@ static u16 check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta,
|
|||||||
"mandatory HT PHY - reject association");
|
"mandatory HT PHY - reject association");
|
||||||
return WLAN_STATUS_ASSOC_DENIED_NO_HT;
|
return WLAN_STATUS_ASSOC_DENIED_NO_HT;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211AC
|
#ifdef CONFIG_IEEE80211AC
|
||||||
if (hapd->iconf->ieee80211ac) {
|
if (hapd->iconf->ieee80211ac) {
|
||||||
@ -3392,7 +3390,6 @@ static u16 check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta,
|
|||||||
pfs_fail:
|
pfs_fail:
|
||||||
#endif /* CONFIG_DPP2 */
|
#endif /* CONFIG_DPP2 */
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
if ((sta->flags & (WLAN_STA_HT | WLAN_STA_VHT)) &&
|
if ((sta->flags & (WLAN_STA_HT | WLAN_STA_VHT)) &&
|
||||||
wpa_auth_get_pairwise(sta->wpa_sm) == WPA_CIPHER_TKIP) {
|
wpa_auth_get_pairwise(sta->wpa_sm) == WPA_CIPHER_TKIP) {
|
||||||
hostapd_logger(hapd, sta->addr,
|
hostapd_logger(hapd, sta->addr,
|
||||||
@ -3402,7 +3399,6 @@ static u16 check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta,
|
|||||||
"association");
|
"association");
|
||||||
return WLAN_STATUS_CIPHER_REJECTED_PER_POLICY;
|
return WLAN_STATUS_CIPHER_REJECTED_PER_POLICY;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
#ifdef CONFIG_HS20
|
#ifdef CONFIG_HS20
|
||||||
} else if (hapd->conf->osen) {
|
} else if (hapd->conf->osen) {
|
||||||
if (elems.osen == NULL) {
|
if (elems.osen == NULL) {
|
||||||
@ -3603,10 +3599,8 @@ static int add_associated_sta(struct hostapd_data *hapd,
|
|||||||
sta->ft_over_ds = 0;
|
sta->ft_over_ds = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
if (sta->flags & WLAN_STA_HT)
|
if (sta->flags & WLAN_STA_HT)
|
||||||
hostapd_get_ht_capab(hapd, sta->ht_capabilities, &ht_cap);
|
hostapd_get_ht_capab(hapd, sta->ht_capabilities, &ht_cap);
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
#ifdef CONFIG_IEEE80211AC
|
#ifdef CONFIG_IEEE80211AC
|
||||||
if (sta->flags & WLAN_STA_VHT)
|
if (sta->flags & WLAN_STA_VHT)
|
||||||
hostapd_get_vht_capab(hapd, sta->vht_capabilities, &vht_cap);
|
hostapd_get_vht_capab(hapd, sta->vht_capabilities, &vht_cap);
|
||||||
@ -3754,10 +3748,8 @@ static u16 send_assoc_resp(struct hostapd_data *hapd, struct sta_info *sta,
|
|||||||
if (sta && status_code == WLAN_STATUS_ASSOC_REJECTED_TEMPORARILY)
|
if (sta && status_code == WLAN_STATUS_ASSOC_REJECTED_TEMPORARILY)
|
||||||
p = hostapd_eid_assoc_comeback_time(hapd, sta, p);
|
p = hostapd_eid_assoc_comeback_time(hapd, sta, p);
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
p = hostapd_eid_ht_capabilities(hapd, p);
|
p = hostapd_eid_ht_capabilities(hapd, p);
|
||||||
p = hostapd_eid_ht_operation(hapd, p);
|
p = hostapd_eid_ht_operation(hapd, p);
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211AC
|
#ifdef CONFIG_IEEE80211AC
|
||||||
if (hapd->iconf->ieee80211ac && !hapd->conf->disable_11ac &&
|
if (hapd->iconf->ieee80211ac && !hapd->conf->disable_11ac &&
|
||||||
@ -4335,9 +4327,7 @@ static void handle_assoc(struct hostapd_data *hapd,
|
|||||||
ieee802_11_set_beacons(hapd->iface);
|
ieee802_11_set_beacons(hapd->iface);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
update_ht_state(hapd, sta);
|
update_ht_state(hapd, sta);
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
|
|
||||||
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
|
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
|
||||||
HOSTAPD_LEVEL_DEBUG,
|
HOSTAPD_LEVEL_DEBUG,
|
||||||
@ -4676,14 +4666,12 @@ static int handle_action(struct hostapd_data *hapd,
|
|||||||
#endif /* CONFIG_FST */
|
#endif /* CONFIG_FST */
|
||||||
case WLAN_ACTION_PUBLIC:
|
case WLAN_ACTION_PUBLIC:
|
||||||
case WLAN_ACTION_PROTECTED_DUAL:
|
case WLAN_ACTION_PROTECTED_DUAL:
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
if (len >= IEEE80211_HDRLEN + 2 &&
|
if (len >= IEEE80211_HDRLEN + 2 &&
|
||||||
mgmt->u.action.u.public_action.action ==
|
mgmt->u.action.u.public_action.action ==
|
||||||
WLAN_PA_20_40_BSS_COEX) {
|
WLAN_PA_20_40_BSS_COEX) {
|
||||||
hostapd_2040_coex_action(hapd, mgmt, len);
|
hostapd_2040_coex_action(hapd, mgmt, len);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
#ifdef CONFIG_DPP
|
#ifdef CONFIG_DPP
|
||||||
if (len >= IEEE80211_HDRLEN + 6 &&
|
if (len >= IEEE80211_HDRLEN + 6 &&
|
||||||
mgmt->u.action.u.vs_public_action.action ==
|
mgmt->u.action.u.vs_public_action.action ==
|
||||||
|
@ -233,9 +233,7 @@ void ap_free_sta(struct hostapd_data *hapd, struct sta_info *sta)
|
|||||||
sta->assoc_ie_taxonomy = NULL;
|
sta->assoc_ie_taxonomy = NULL;
|
||||||
#endif /* CONFIG_TAXONOMY */
|
#endif /* CONFIG_TAXONOMY */
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
ht40_intolerant_remove(hapd->iface, sta);
|
ht40_intolerant_remove(hapd->iface, sta);
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
|
|
||||||
#ifdef CONFIG_P2P
|
#ifdef CONFIG_P2P
|
||||||
if (sta->no_p2p_set) {
|
if (sta->no_p2p_set) {
|
||||||
@ -246,10 +244,10 @@ void ap_free_sta(struct hostapd_data *hapd, struct sta_info *sta)
|
|||||||
}
|
}
|
||||||
#endif /* CONFIG_P2P */
|
#endif /* CONFIG_P2P */
|
||||||
|
|
||||||
#if defined(NEED_AP_MLME) && defined(CONFIG_IEEE80211N)
|
#ifdef NEED_AP_MLME
|
||||||
if (hostapd_ht_operation_update(hapd->iface) > 0)
|
if (hostapd_ht_operation_update(hapd->iface) > 0)
|
||||||
set_beacon++;
|
set_beacon++;
|
||||||
#endif /* NEED_AP_MLME && CONFIG_IEEE80211N */
|
#endif /* NEED_AP_MLME */
|
||||||
|
|
||||||
#ifdef CONFIG_MESH
|
#ifdef CONFIG_MESH
|
||||||
if (hapd->mesh_sta_free_cb)
|
if (hapd->mesh_sta_free_cb)
|
||||||
|
@ -576,17 +576,13 @@ bsd_set_freq(void *priv, struct hostapd_freq_params *freq)
|
|||||||
|
|
||||||
if (channel < 14) {
|
if (channel < 14) {
|
||||||
mode =
|
mode =
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
freq->ht_enabled ? IFM_IEEE80211_11NG :
|
freq->ht_enabled ? IFM_IEEE80211_11NG :
|
||||||
#endif /* CONFIG_IEEE80211N */
|
IFM_IEEE80211_11G;
|
||||||
IFM_IEEE80211_11G;
|
|
||||||
} else if (channel == 14) {
|
} else if (channel == 14) {
|
||||||
mode = IFM_IEEE80211_11B;
|
mode = IFM_IEEE80211_11B;
|
||||||
} else {
|
} else {
|
||||||
mode =
|
mode =
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
freq->ht_enabled ? IFM_IEEE80211_11NA :
|
freq->ht_enabled ? IFM_IEEE80211_11NA :
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
IFM_IEEE80211_11A;
|
IFM_IEEE80211_11A;
|
||||||
}
|
}
|
||||||
if (bsd_set_mediaopt(drv, IFM_MMASK, mode) < 0) {
|
if (bsd_set_mediaopt(drv, IFM_MMASK, mode) < 0) {
|
||||||
|
@ -43,7 +43,6 @@ CONFIG_VLAN_NETLINK=y
|
|||||||
CONFIG_LIBNL32=y
|
CONFIG_LIBNL32=y
|
||||||
CONFIG_LIBNL3_ROUTE=y
|
CONFIG_LIBNL3_ROUTE=y
|
||||||
CONFIG_IEEE80211R=y
|
CONFIG_IEEE80211R=y
|
||||||
CONFIG_IEEE80211N=y
|
|
||||||
CONFIG_IEEE80211AC=y
|
CONFIG_IEEE80211AC=y
|
||||||
|
|
||||||
CONFIG_WPS=y
|
CONFIG_WPS=y
|
||||||
|
@ -13,5 +13,3 @@ CFLAGS += -DCONFIG_NO_HOSTAPD_LOGGER
|
|||||||
CONFIG_NO_AES_EXTRAS=y
|
CONFIG_NO_AES_EXTRAS=y
|
||||||
|
|
||||||
CFLAGS += -Os
|
CFLAGS += -Os
|
||||||
|
|
||||||
CONFIG_IEEE80211N=y
|
|
||||||
|
@ -47,7 +47,6 @@ CONFIG_OCSP=y
|
|||||||
#CONFIG_CTRL_IFACE_DBUS_INTRO=y
|
#CONFIG_CTRL_IFACE_DBUS_INTRO=y
|
||||||
|
|
||||||
CONFIG_IEEE80211R=y
|
CONFIG_IEEE80211R=y
|
||||||
CONFIG_IEEE80211N=y
|
|
||||||
CONFIG_IEEE80211AC=y
|
CONFIG_IEEE80211AC=y
|
||||||
|
|
||||||
CONFIG_DEBUG_FILE=y
|
CONFIG_DEBUG_FILE=y
|
||||||
|
@ -48,7 +48,6 @@ CONFIG_VLAN_NETLINK=y
|
|||||||
CONFIG_LIBNL32=y
|
CONFIG_LIBNL32=y
|
||||||
CONFIG_LIBNL3_ROUTE=y
|
CONFIG_LIBNL3_ROUTE=y
|
||||||
CONFIG_IEEE80211R=y
|
CONFIG_IEEE80211R=y
|
||||||
CONFIG_IEEE80211N=y
|
|
||||||
CONFIG_IEEE80211AC=y
|
CONFIG_IEEE80211AC=y
|
||||||
CONFIG_IEEE80211AX=y
|
CONFIG_IEEE80211AX=y
|
||||||
|
|
||||||
|
@ -58,7 +58,6 @@ CONFIG_CTRL_IFACE_DBUS_NEW=y
|
|||||||
CONFIG_CTRL_IFACE_DBUS_INTRO=y
|
CONFIG_CTRL_IFACE_DBUS_INTRO=y
|
||||||
|
|
||||||
CONFIG_IEEE80211R=y
|
CONFIG_IEEE80211R=y
|
||||||
CONFIG_IEEE80211N=y
|
|
||||||
CONFIG_IEEE80211AC=y
|
CONFIG_IEEE80211AC=y
|
||||||
CONFIG_IEEE80211AX=y
|
CONFIG_IEEE80211AX=y
|
||||||
|
|
||||||
|
@ -858,7 +858,6 @@ OBJS += src/ap/bss_load.c
|
|||||||
OBJS += src/ap/eap_user_db.c
|
OBJS += src/ap/eap_user_db.c
|
||||||
OBJS += src/ap/neighbor_db.c
|
OBJS += src/ap/neighbor_db.c
|
||||||
OBJS += src/ap/rrm.c
|
OBJS += src/ap/rrm.c
|
||||||
ifdef CONFIG_IEEE80211N
|
|
||||||
OBJS += src/ap/ieee802_11_ht.c
|
OBJS += src/ap/ieee802_11_ht.c
|
||||||
ifdef CONFIG_IEEE80211AC
|
ifdef CONFIG_IEEE80211AC
|
||||||
OBJS += src/ap/ieee802_11_vht.c
|
OBJS += src/ap/ieee802_11_vht.c
|
||||||
@ -866,7 +865,6 @@ endif
|
|||||||
ifdef CONFIG_IEEE80211AX
|
ifdef CONFIG_IEEE80211AX
|
||||||
OBJS += src/ap/ieee802_11_he.c
|
OBJS += src/ap/ieee802_11_he.c
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
ifdef CONFIG_WNM_AP
|
ifdef CONFIG_WNM_AP
|
||||||
L_CFLAGS += -DCONFIG_WNM_AP
|
L_CFLAGS += -DCONFIG_WNM_AP
|
||||||
OBJS += src/ap/wnm_ap.c
|
OBJS += src/ap/wnm_ap.c
|
||||||
@ -886,15 +884,12 @@ OBJS += src/eap_server/eap_server.c
|
|||||||
OBJS += src/eap_server/eap_server_identity.c
|
OBJS += src/eap_server/eap_server_identity.c
|
||||||
OBJS += src/eap_server/eap_server_methods.c
|
OBJS += src/eap_server/eap_server_methods.c
|
||||||
|
|
||||||
ifdef CONFIG_IEEE80211N
|
|
||||||
L_CFLAGS += -DCONFIG_IEEE80211N
|
|
||||||
ifdef CONFIG_IEEE80211AC
|
ifdef CONFIG_IEEE80211AC
|
||||||
L_CFLAGS += -DCONFIG_IEEE80211AC
|
L_CFLAGS += -DCONFIG_IEEE80211AC
|
||||||
endif
|
endif
|
||||||
ifdef CONFIG_IEEE80211AX
|
ifdef CONFIG_IEEE80211AX
|
||||||
L_CFLAGS += -DCONFIG_IEEE80211AX
|
L_CFLAGS += -DCONFIG_IEEE80211AX
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef NEED_AP_MLME
|
ifdef NEED_AP_MLME
|
||||||
OBJS += src/ap/wmm.c
|
OBJS += src/ap/wmm.c
|
||||||
|
@ -904,7 +904,6 @@ OBJS += ../src/ap/bss_load.o
|
|||||||
OBJS += ../src/ap/eap_user_db.o
|
OBJS += ../src/ap/eap_user_db.o
|
||||||
OBJS += ../src/ap/neighbor_db.o
|
OBJS += ../src/ap/neighbor_db.o
|
||||||
OBJS += ../src/ap/rrm.o
|
OBJS += ../src/ap/rrm.o
|
||||||
ifdef CONFIG_IEEE80211N
|
|
||||||
OBJS += ../src/ap/ieee802_11_ht.o
|
OBJS += ../src/ap/ieee802_11_ht.o
|
||||||
ifdef CONFIG_IEEE80211AC
|
ifdef CONFIG_IEEE80211AC
|
||||||
OBJS += ../src/ap/ieee802_11_vht.o
|
OBJS += ../src/ap/ieee802_11_vht.o
|
||||||
@ -912,7 +911,6 @@ endif
|
|||||||
ifdef CONFIG_IEEE80211AX
|
ifdef CONFIG_IEEE80211AX
|
||||||
OBJS += ../src/ap/ieee802_11_he.o
|
OBJS += ../src/ap/ieee802_11_he.o
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
ifdef CONFIG_WNM_AP
|
ifdef CONFIG_WNM_AP
|
||||||
CFLAGS += -DCONFIG_WNM_AP
|
CFLAGS += -DCONFIG_WNM_AP
|
||||||
OBJS += ../src/ap/wnm_ap.o
|
OBJS += ../src/ap/wnm_ap.o
|
||||||
@ -932,15 +930,12 @@ OBJS += ../src/eap_server/eap_server.o
|
|||||||
OBJS += ../src/eap_server/eap_server_identity.o
|
OBJS += ../src/eap_server/eap_server_identity.o
|
||||||
OBJS += ../src/eap_server/eap_server_methods.o
|
OBJS += ../src/eap_server/eap_server_methods.o
|
||||||
|
|
||||||
ifdef CONFIG_IEEE80211N
|
|
||||||
CFLAGS += -DCONFIG_IEEE80211N
|
|
||||||
ifdef CONFIG_IEEE80211AC
|
ifdef CONFIG_IEEE80211AC
|
||||||
CFLAGS += -DCONFIG_IEEE80211AC
|
CFLAGS += -DCONFIG_IEEE80211AC
|
||||||
endif
|
endif
|
||||||
ifdef CONFIG_IEEE80211AX
|
ifdef CONFIG_IEEE80211AX
|
||||||
CFLAGS += -DCONFIG_IEEE80211AX
|
CFLAGS += -DCONFIG_IEEE80211AX
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef NEED_AP_MLME
|
ifdef NEED_AP_MLME
|
||||||
OBJS += ../src/ap/wmm.o
|
OBJS += ../src/ap/wmm.o
|
||||||
|
@ -438,11 +438,7 @@ CONFIG_ANDROID_LOG=y
|
|||||||
# either wpa_supplicant or hostapd are run.
|
# either wpa_supplicant or hostapd are run.
|
||||||
CONFIG_NO_RANDOM_POOL=y
|
CONFIG_NO_RANDOM_POOL=y
|
||||||
|
|
||||||
# IEEE 802.11n (High Throughput) support (mainly for AP mode)
|
|
||||||
CONFIG_IEEE80211N=y
|
|
||||||
|
|
||||||
# IEEE 802.11ac (Very High Throughput) support (mainly for AP mode)
|
# IEEE 802.11ac (Very High Throughput) support (mainly for AP mode)
|
||||||
# (depends on CONFIG_IEEE80211N)
|
|
||||||
#CONFIG_IEEE80211AC=y
|
#CONFIG_IEEE80211AC=y
|
||||||
|
|
||||||
# Wireless Network Management (IEEE Std 802.11v-2011)
|
# Wireless Network Management (IEEE Std 802.11v-2011)
|
||||||
|
@ -44,7 +44,6 @@ static void wpas_wps_ap_pin_timeout(void *eloop_data, void *user_ctx);
|
|||||||
#endif /* CONFIG_WPS */
|
#endif /* CONFIG_WPS */
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
static void wpas_conf_ap_vht(struct wpa_supplicant *wpa_s,
|
static void wpas_conf_ap_vht(struct wpa_supplicant *wpa_s,
|
||||||
struct wpa_ssid *ssid,
|
struct wpa_ssid *ssid,
|
||||||
struct hostapd_config *conf,
|
struct hostapd_config *conf,
|
||||||
@ -130,7 +129,6 @@ no_vht:
|
|||||||
conf->channel + conf->secondary_channel * 2;
|
conf->channel + conf->secondary_channel * 2;
|
||||||
conf->vht_oper_chwidth = CHANWIDTH_USE_HT;
|
conf->vht_oper_chwidth = CHANWIDTH_USE_HT;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
|
|
||||||
|
|
||||||
int wpa_supplicant_conf_ap_ht(struct wpa_supplicant *wpa_s,
|
int wpa_supplicant_conf_ap_ht(struct wpa_supplicant *wpa_s,
|
||||||
@ -149,7 +147,6 @@ int wpa_supplicant_conf_ap_ht(struct wpa_supplicant *wpa_s,
|
|||||||
/* TODO: enable HT40 if driver supports it;
|
/* TODO: enable HT40 if driver supports it;
|
||||||
* drop to 11b if driver does not support 11g */
|
* drop to 11b if driver does not support 11g */
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
/*
|
/*
|
||||||
* Enable HT20 if the driver supports it, by setting conf->ieee80211n
|
* Enable HT20 if the driver supports it, by setting conf->ieee80211n
|
||||||
* and a mask of allowed capabilities within conf->ht_capab.
|
* and a mask of allowed capabilities within conf->ht_capab.
|
||||||
@ -269,7 +266,6 @@ int wpa_supplicant_conf_ap_ht(struct wpa_supplicant *wpa_s,
|
|||||||
conf->no_pri_sec_switch = 1;
|
conf->no_pri_sec_switch = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -471,11 +471,7 @@ CONFIG_DEBUG_SYSLOG=y
|
|||||||
# Requires glibc 2.25 to build, falls back to /dev/random if unavailable.
|
# Requires glibc 2.25 to build, falls back to /dev/random if unavailable.
|
||||||
#CONFIG_GETRANDOM=y
|
#CONFIG_GETRANDOM=y
|
||||||
|
|
||||||
# IEEE 802.11n (High Throughput) support (mainly for AP mode)
|
|
||||||
CONFIG_IEEE80211N=y
|
|
||||||
|
|
||||||
# IEEE 802.11ac (Very High Throughput) support (mainly for AP mode)
|
# IEEE 802.11ac (Very High Throughput) support (mainly for AP mode)
|
||||||
# (depends on CONFIG_IEEE80211N)
|
|
||||||
CONFIG_IEEE80211AC=y
|
CONFIG_IEEE80211AC=y
|
||||||
|
|
||||||
# Wireless Network Management (IEEE Std 802.11v-2011)
|
# Wireless Network Management (IEEE Std 802.11v-2011)
|
||||||
|
@ -233,12 +233,10 @@ static void mesh_mpm_send_plink_action(struct wpa_supplicant *wpa_s,
|
|||||||
2 + 24 + /* peering management */
|
2 + 24 + /* peering management */
|
||||||
2 + 96 + 32 + 32 + /* AMPE (96 + max GTKlen + max IGTKlen) */
|
2 + 96 + 32 + 32 + /* AMPE (96 + max GTKlen + max IGTKlen) */
|
||||||
2 + 16; /* MIC */
|
2 + 16; /* MIC */
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
if (type != PLINK_CLOSE && wpa_s->mesh_ht_enabled) {
|
if (type != PLINK_CLOSE && wpa_s->mesh_ht_enabled) {
|
||||||
buf_len += 2 + 26 + /* HT capabilities */
|
buf_len += 2 + 26 + /* HT capabilities */
|
||||||
2 + 22; /* HT operation */
|
2 + 22; /* HT operation */
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
#ifdef CONFIG_IEEE80211AC
|
#ifdef CONFIG_IEEE80211AC
|
||||||
if (type != PLINK_CLOSE && wpa_s->mesh_vht_enabled) {
|
if (type != PLINK_CLOSE && wpa_s->mesh_vht_enabled) {
|
||||||
buf_len += 2 + 12 + /* VHT Capabilities */
|
buf_len += 2 + 12 + /* VHT Capabilities */
|
||||||
@ -354,7 +352,6 @@ static void mesh_mpm_send_plink_action(struct wpa_supplicant *wpa_s,
|
|||||||
wpabuf_put(buf, PMKID_LEN));
|
wpabuf_put(buf, PMKID_LEN));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
if (type != PLINK_CLOSE && wpa_s->mesh_ht_enabled) {
|
if (type != PLINK_CLOSE && wpa_s->mesh_ht_enabled) {
|
||||||
u8 ht_capa_oper[2 + 26 + 2 + 22];
|
u8 ht_capa_oper[2 + 26 + 2 + 22];
|
||||||
|
|
||||||
@ -362,7 +359,6 @@ static void mesh_mpm_send_plink_action(struct wpa_supplicant *wpa_s,
|
|||||||
pos = hostapd_eid_ht_operation(bss, pos);
|
pos = hostapd_eid_ht_operation(bss, pos);
|
||||||
wpabuf_put_data(buf, ht_capa_oper, pos - ht_capa_oper);
|
wpabuf_put_data(buf, ht_capa_oper, pos - ht_capa_oper);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
#ifdef CONFIG_IEEE80211AC
|
#ifdef CONFIG_IEEE80211AC
|
||||||
if (type != PLINK_CLOSE && wpa_s->mesh_vht_enabled) {
|
if (type != PLINK_CLOSE && wpa_s->mesh_vht_enabled) {
|
||||||
u8 vht_capa_oper[2 + 12 + 2 + 5];
|
u8 vht_capa_oper[2 + 12 + 2 + 5];
|
||||||
@ -696,9 +692,7 @@ static struct sta_info * mesh_mpm_add_peer(struct wpa_supplicant *wpa_s,
|
|||||||
struct mesh_conf *conf = wpa_s->ifmsh->mconf;
|
struct mesh_conf *conf = wpa_s->ifmsh->mconf;
|
||||||
struct hostapd_data *data = wpa_s->ifmsh->bss[0];
|
struct hostapd_data *data = wpa_s->ifmsh->bss[0];
|
||||||
struct sta_info *sta;
|
struct sta_info *sta;
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
struct ieee80211_ht_operation *oper;
|
struct ieee80211_ht_operation *oper;
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (elems->mesh_config_len >= 7 &&
|
if (elems->mesh_config_len >= 7 &&
|
||||||
@ -729,7 +723,6 @@ static struct sta_info * mesh_mpm_add_peer(struct wpa_supplicant *wpa_s,
|
|||||||
if (!sta->my_lid)
|
if (!sta->my_lid)
|
||||||
mesh_mpm_init_link(wpa_s, sta);
|
mesh_mpm_init_link(wpa_s, sta);
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211N
|
|
||||||
copy_sta_ht_capab(data, sta, elems->ht_capabilities);
|
copy_sta_ht_capab(data, sta, elems->ht_capabilities);
|
||||||
|
|
||||||
oper = (struct ieee80211_ht_operation *) elems->ht_operation;
|
oper = (struct ieee80211_ht_operation *) elems->ht_operation;
|
||||||
@ -743,7 +736,6 @@ static struct sta_info * mesh_mpm_add_peer(struct wpa_supplicant *wpa_s,
|
|||||||
}
|
}
|
||||||
|
|
||||||
update_ht_state(data, sta);
|
update_ht_state(data, sta);
|
||||||
#endif /* CONFIG_IEEE80211N */
|
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211AC
|
#ifdef CONFIG_IEEE80211AC
|
||||||
copy_sta_vht_capab(data, sta, elems->vht_capabilities);
|
copy_sta_vht_capab(data, sta, elems->vht_capabilities);
|
||||||
|
Loading…
Reference in New Issue
Block a user