EHT: AP mode configuration options to enable/disable the support

Add compilation support for IEEE 802.11be along with options to enable
EHT support per radio and disable per interface.

Enabling HE is mandatory to enable EHT mode.

Tested-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
Signed-off-by: Aloka Dixit <quic_alokad@quicinc.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
This commit is contained in:
Aloka Dixit 2022-04-19 11:04:03 -07:00 committed by Jouni Malinen
parent 9f7da264bd
commit 8dcc2139ff
10 changed files with 67 additions and 0 deletions

View file

@ -294,6 +294,11 @@ ifdef CONFIG_IEEE80211AC
L_CFLAGS += -DCONFIG_IEEE80211AC L_CFLAGS += -DCONFIG_IEEE80211AC
endif endif
ifdef CONFIG_IEEE80211BE
CONFIG_IEEE80211AX=y
L_CFLAGS += -DCONFIG_IEEE80211BE
endif
ifdef CONFIG_IEEE80211AX ifdef CONFIG_IEEE80211AX
L_CFLAGS += -DCONFIG_IEEE80211AX L_CFLAGS += -DCONFIG_IEEE80211AX
endif endif

View file

@ -339,6 +339,11 @@ ifdef CONFIG_IEEE80211AC
CFLAGS += -DCONFIG_IEEE80211AC CFLAGS += -DCONFIG_IEEE80211AC
endif endif
ifdef CONFIG_IEEE80211BE
CONFIG_IEEE80211AX=y
CFLAGS += -DCONFIG_IEEE80211BE
endif
ifdef CONFIG_IEEE80211AX ifdef CONFIG_IEEE80211AX
CFLAGS += -DCONFIG_IEEE80211AX CFLAGS += -DCONFIG_IEEE80211AX
OBJS += ../src/ap/ieee802_11_he.o OBJS += ../src/ap/ieee802_11_he.o

View file

@ -4669,6 +4669,8 @@ static int hostapd_config_fill(struct hostapd_config *conf,
bss->disable_11ac = !!atoi(pos); bss->disable_11ac = !!atoi(pos);
} else if (os_strcmp(buf, "disable_11ax") == 0) { } else if (os_strcmp(buf, "disable_11ax") == 0) {
bss->disable_11ax = !!atoi(pos); bss->disable_11ax = !!atoi(pos);
} else if (os_strcmp(buf, "disable_11be") == 0) {
bss->disable_11be = !!atoi(pos);
#ifdef CONFIG_PASN #ifdef CONFIG_PASN
#ifdef CONFIG_TESTING_OPTIONS #ifdef CONFIG_TESTING_OPTIONS
} else if (os_strcmp(buf, "force_kdk_derivation") == 0) { } else if (os_strcmp(buf, "force_kdk_derivation") == 0) {
@ -4696,6 +4698,10 @@ static int hostapd_config_fill(struct hostapd_config *conf,
return 1; return 1;
} else if (os_strcmp(buf, "rnr") == 0) { } else if (os_strcmp(buf, "rnr") == 0) {
bss->rnr = atoi(pos); bss->rnr = atoi(pos);
#ifdef CONFIG_IEEE80211BE
} else if (os_strcmp(buf, "ieee80211be") == 0) {
conf->ieee80211be = atoi(pos);
#endif /* CONFIG_IEEE80211BE */
} else { } else {
wpa_printf(MSG_ERROR, wpa_printf(MSG_ERROR,
"Line %d: unknown configuration item '%s'", "Line %d: unknown configuration item '%s'",

View file

@ -158,6 +158,13 @@ CONFIG_IPV6=y
# IEEE 802.11ax HE support # IEEE 802.11ax HE support
#CONFIG_IEEE80211AX=y #CONFIG_IEEE80211AX=y
# IEEE 802.11be EHT support
# CONFIG_IEEE80211AX is mandatory for setting CONFIG_IEEE80211BE.
# Note: This is experimental and work in progress. The definitions are still
# subject to change and this should not be expected to interoperate with the
# final IEEE 802.11be version.
#CONFIG_IEEE80211BE=y
# Simultaneous Authentication of Equals (SAE), WPA3-Personal # Simultaneous Authentication of Equals (SAE), WPA3-Personal
#CONFIG_SAE=y #CONFIG_SAE=y

View file

@ -990,6 +990,16 @@ wmm_ac_vo_acm=0
# Valid range: 0..20 TUs; default is 0 (disabled) # Valid range: 0..20 TUs; default is 0 (disabled)
#unsol_bcast_probe_resp_interval=0 #unsol_bcast_probe_resp_interval=0
##### IEEE 802.11be related configuration #####################################
#ieee80211be: Whether IEEE 802.11be (EHT) is enabled
# 0 = disabled (default)
# 1 = enabled
#ieee80211be=1
#disable_11be: Boolean (0/1) to disable EHT for a specific BSS
#disable_11be=0
##### IEEE 802.1X-2004 related configuration ################################## ##### IEEE 802.1X-2004 related configuration ##################################
# Require IEEE 802.1X authorization # Require IEEE 802.1X authorization

View file

@ -1435,6 +1435,14 @@ static int hostapd_config_check_bss(struct hostapd_bss_config *bss,
} }
#endif /* CONFIG_FILS */ #endif /* CONFIG_FILS */
#ifdef CONFIG_IEEE80211BE
if (full_config && !bss->disable_11be && bss->disable_11ax) {
bss->disable_11be = true;
wpa_printf(MSG_INFO,
"Disabling IEEE 802.11be as IEEE 802.11ax is disabled for this BSS");
}
#endif /* CONFIG_IEEE80211BE */
return 0; return 0;
} }
@ -1510,6 +1518,14 @@ int hostapd_config_check(struct hostapd_config *conf, int full_config)
return -1; return -1;
} }
#ifdef CONFIG_IEEE80211BE
if (full_config && conf->ieee80211be && !conf->ieee80211ax) {
wpa_printf(MSG_ERROR,
"Cannot set ieee80211be without ieee80211ax");
return -1;
}
#endif /* CONFIG_IEEE80211BE */
for (i = 0; i < conf->num_bss; i++) { for (i = 0; i < conf->num_bss; i++) {
if (hostapd_config_check_bss(conf->bss[i], conf, full_config)) if (hostapd_config_check_bss(conf->bss[i], conf, full_config))
return -1; return -1;

View file

@ -541,6 +541,7 @@ struct hostapd_bss_config {
bool disable_11n; bool disable_11n;
bool disable_11ac; bool disable_11ac;
bool disable_11ax; bool disable_11ax;
bool disable_11be;
/* IEEE 802.11v */ /* IEEE 802.11v */
int time_advertisement; int time_advertisement;
@ -1114,6 +1115,8 @@ struct hostapd_config {
unsigned int airtime_update_interval; unsigned int airtime_update_interval;
#define AIRTIME_MODE_MAX (__AIRTIME_MODE_MAX - 1) #define AIRTIME_MODE_MAX (__AIRTIME_MODE_MAX - 1)
#endif /* CONFIG_AIRTIME_POLICY */ #endif /* CONFIG_AIRTIME_POLICY */
int ieee80211be;
}; };

View file

@ -933,6 +933,10 @@ OBJS += src/eap_server/eap_server_methods.c
ifdef CONFIG_IEEE80211AC ifdef CONFIG_IEEE80211AC
L_CFLAGS += -DCONFIG_IEEE80211AC L_CFLAGS += -DCONFIG_IEEE80211AC
endif endif
ifdef CONFIG_IEEE80211BE
CONFIG_IEEE80211AX=y
L_CFLAGS += -DCONFIG_IEEE80211BE
endif
ifdef CONFIG_IEEE80211AX ifdef CONFIG_IEEE80211AX
L_CFLAGS += -DCONFIG_IEEE80211AX L_CFLAGS += -DCONFIG_IEEE80211AX
endif endif

View file

@ -968,6 +968,10 @@ OBJS += ../src/eap_server/eap_server_methods.o
ifdef CONFIG_IEEE80211AC ifdef CONFIG_IEEE80211AC
CFLAGS += -DCONFIG_IEEE80211AC CFLAGS += -DCONFIG_IEEE80211AC
endif endif
ifdef CONFIG_IEEE80211BE
CONFIG_IEEE80211AX=y
CFLAGS += -DCONFIG_IEEE80211BE
endif
ifdef CONFIG_IEEE80211AX ifdef CONFIG_IEEE80211AX
CFLAGS += -DCONFIG_IEEE80211AX CFLAGS += -DCONFIG_IEEE80211AX
endif endif

View file

@ -486,6 +486,13 @@ CONFIG_IEEE80211AC=y
# IEEE 802.11ax HE support (mainly for AP mode) # IEEE 802.11ax HE support (mainly for AP mode)
CONFIG_IEEE80211AX=y CONFIG_IEEE80211AX=y
# IEEE 802.11be EHT support (mainly for AP mode)
# CONFIG_IEEE80211AX is mandatory for setting CONFIG_IEEE80211BE.
# Note: This is experimental and work in progress. The definitions are still
# subject to change and this should not be expected to interoperate with the
# final IEEE 802.11be version.
#CONFIG_IEEE80211BE=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