hostapd: Initial IEEE 802.11ax (HE) definitions
Add IEEE 802.11ax definitions for config, IEEE structures, and constants. These are still subject to change in the IEEE process. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
5972dc73c1
commit
94380cb40a
10 changed files with 182 additions and 0 deletions
|
@ -281,6 +281,10 @@ ifdef CONFIG_IEEE80211AC
|
||||||
L_CFLAGS += -DCONFIG_IEEE80211AC
|
L_CFLAGS += -DCONFIG_IEEE80211AC
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifdef CONFIG_IEEE80211AX
|
||||||
|
L_CFLAGS += -DCONFIG_IEEE80211AX
|
||||||
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_MBO
|
ifdef CONFIG_MBO
|
||||||
L_CFLAGS += -DCONFIG_MBO
|
L_CFLAGS += -DCONFIG_MBO
|
||||||
OBJS += src/ap/mbo_ap.c
|
OBJS += src/ap/mbo_ap.c
|
||||||
|
|
|
@ -325,6 +325,10 @@ ifdef CONFIG_IEEE80211AC
|
||||||
CFLAGS += -DCONFIG_IEEE80211AC
|
CFLAGS += -DCONFIG_IEEE80211AC
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifdef CONFIG_IEEE80211AX
|
||||||
|
CFLAGS += -DCONFIG_IEEE80211AX
|
||||||
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_MBO
|
ifdef CONFIG_MBO
|
||||||
CFLAGS += -DCONFIG_MBO
|
CFLAGS += -DCONFIG_MBO
|
||||||
OBJS += ../src/ap/mbo_ap.o
|
OBJS += ../src/ap/mbo_ap.o
|
||||||
|
|
|
@ -3008,6 +3008,24 @@ static int hostapd_config_fill(struct hostapd_config *conf,
|
||||||
} else if (os_strcmp(buf, "use_sta_nsts") == 0) {
|
} else if (os_strcmp(buf, "use_sta_nsts") == 0) {
|
||||||
bss->use_sta_nsts = atoi(pos);
|
bss->use_sta_nsts = atoi(pos);
|
||||||
#endif /* CONFIG_IEEE80211AC */
|
#endif /* CONFIG_IEEE80211AC */
|
||||||
|
#ifdef CONFIG_IEEE80211AX
|
||||||
|
} else if (os_strcmp(buf, "ieee80211ax") == 0) {
|
||||||
|
conf->ieee80211ax = atoi(pos);
|
||||||
|
} else if (os_strcmp(buf, "he_su_beamformer") == 0) {
|
||||||
|
conf->he_phy_capab.he_su_beamformer = atoi(pos);
|
||||||
|
} else if (os_strcmp(buf, "he_su_beamformee") == 0) {
|
||||||
|
conf->he_phy_capab.he_su_beamformee = atoi(pos);
|
||||||
|
} else if (os_strcmp(buf, "he_mu_beamformer") == 0) {
|
||||||
|
conf->he_phy_capab.he_mu_beamformer = atoi(pos);
|
||||||
|
} else if (os_strcmp(buf, "he_bss_color") == 0) {
|
||||||
|
conf->he_op.he_bss_color = atoi(pos);
|
||||||
|
} else if (os_strcmp(buf, "he_default_pe_duration") == 0) {
|
||||||
|
conf->he_op.he_default_pe_duration = atoi(pos);
|
||||||
|
} else if (os_strcmp(buf, "he_twt_required") == 0) {
|
||||||
|
conf->he_op.he_twt_required = atoi(pos);
|
||||||
|
} else if (os_strcmp(buf, "he_rts_threshold") == 0) {
|
||||||
|
conf->he_op.he_rts_threshold = atoi(pos);
|
||||||
|
#endif /* CONFIG_IEEE80211AX */
|
||||||
} else if (os_strcmp(buf, "max_listen_interval") == 0) {
|
} else if (os_strcmp(buf, "max_listen_interval") == 0) {
|
||||||
bss->max_listen_interval = atoi(pos);
|
bss->max_listen_interval = atoi(pos);
|
||||||
} else if (os_strcmp(buf, "disable_pmksa_caching") == 0) {
|
} else if (os_strcmp(buf, "disable_pmksa_caching") == 0) {
|
||||||
|
|
|
@ -157,6 +157,12 @@ CONFIG_IPV6=y
|
||||||
# IEEE 802.11ac (Very High Throughput) support
|
# IEEE 802.11ac (Very High Throughput) support
|
||||||
#CONFIG_IEEE80211AC=y
|
#CONFIG_IEEE80211AC=y
|
||||||
|
|
||||||
|
# IEEE 802.11ax HE support
|
||||||
|
# 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.11ax version.
|
||||||
|
#CONFIG_IEEE80211AX=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.
|
||||||
|
|
|
@ -721,6 +721,47 @@ wmm_ac_vo_acm=0
|
||||||
# setting use_sta_nsts=1.
|
# setting use_sta_nsts=1.
|
||||||
#use_sta_nsts=0
|
#use_sta_nsts=0
|
||||||
|
|
||||||
|
##### IEEE 802.11ax related configuration #####################################
|
||||||
|
|
||||||
|
#ieee80211ax: Whether IEEE 802.11ax (HE) is enabled
|
||||||
|
# 0 = disabled (default)
|
||||||
|
# 1 = enabled
|
||||||
|
#ieee80211ax=1
|
||||||
|
|
||||||
|
#he_su_beamformer: HE single user beamformer support
|
||||||
|
# 0 = not supported (default)
|
||||||
|
# 1 = supported
|
||||||
|
#he_su_beamformer=1
|
||||||
|
|
||||||
|
#he_su_beamformee: HE single user beamformee support
|
||||||
|
# 0 = not supported (default)
|
||||||
|
# 1 = supported
|
||||||
|
#he_su_beamformee=1
|
||||||
|
|
||||||
|
#he_mu_beamformer: HE multiple user beamformer support
|
||||||
|
# 0 = not supported (default)
|
||||||
|
# 1 = supported
|
||||||
|
#he_mu_beamformer=1
|
||||||
|
|
||||||
|
# he_bss_color: BSS color
|
||||||
|
# 0 = no BSS color (default)
|
||||||
|
# unsigned integer = BSS color
|
||||||
|
#he_bss_color=0
|
||||||
|
|
||||||
|
#he_default_pe_duration: The duration of PE field in an HE PPDU in us
|
||||||
|
# Possible values are 0 us (default), 4 us, 8 us, 12 us, and 16 us
|
||||||
|
#he_default_pe_duration=0
|
||||||
|
|
||||||
|
#he_twt_required: Whether TWT is required
|
||||||
|
# 0 = not required (default)
|
||||||
|
# 1 = required
|
||||||
|
#he_twt_required=0
|
||||||
|
|
||||||
|
#he_rts_threshold: Duration of STA transmission
|
||||||
|
# 0 = not set (default)
|
||||||
|
# unsigned integer = duration in units of 16 us
|
||||||
|
#he_rts_threshold=0
|
||||||
|
|
||||||
##### IEEE 802.1X-2004 related configuration ##################################
|
##### IEEE 802.1X-2004 related configuration ##################################
|
||||||
|
|
||||||
# Require IEEE 802.1X authorization
|
# Require IEEE 802.1X authorization
|
||||||
|
|
|
@ -619,6 +619,24 @@ struct hostapd_bss_config {
|
||||||
int multicast_to_unicast;
|
int multicast_to_unicast;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct he_phy_capabilities_info - HE PHY capabilities
|
||||||
|
*/
|
||||||
|
struct he_phy_capabilities_info {
|
||||||
|
Boolean he_su_beamformer;
|
||||||
|
Boolean he_su_beamformee;
|
||||||
|
Boolean he_mu_beamformer;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct he_operation - HE operation
|
||||||
|
*/
|
||||||
|
struct he_operation {
|
||||||
|
u8 he_bss_color;
|
||||||
|
u8 he_default_pe_duration;
|
||||||
|
u8 he_twt_required;
|
||||||
|
u8 he_rts_threshold;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct hostapd_config - Per-radio interface configuration
|
* struct hostapd_config - Per-radio interface configuration
|
||||||
|
@ -732,6 +750,12 @@ struct hostapd_config {
|
||||||
struct wpabuf *lci;
|
struct wpabuf *lci;
|
||||||
struct wpabuf *civic;
|
struct wpabuf *civic;
|
||||||
int stationary_ap;
|
int stationary_ap;
|
||||||
|
|
||||||
|
int ieee80211ax;
|
||||||
|
#ifdef CONFIG_IEEE80211AX
|
||||||
|
struct he_phy_capabilities_info he_phy_capab;
|
||||||
|
struct he_operation he_op;
|
||||||
|
#endif /* CONFIG_IEEE80211AX */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1960,4 +1960,53 @@ enum nr_chan_width {
|
||||||
NR_CHAN_WIDTH_80P80 = 4,
|
NR_CHAN_WIDTH_80P80 = 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct ieee80211_he_capabilities {
|
||||||
|
u8 he_mac_capab_info[5];
|
||||||
|
u8 he_phy_capab_info[9];
|
||||||
|
u16 he_txrx_mcs_support;
|
||||||
|
/* possibly followed by Tx Rx MCS NSS descriptor */
|
||||||
|
u8 variable[];
|
||||||
|
/* PPE Thresholds (optional) */
|
||||||
|
} STRUCT_PACKED;
|
||||||
|
|
||||||
|
struct ieee80211_he_operation {
|
||||||
|
u32 he_oper_params;
|
||||||
|
u8 he_mcs_nss_set[3];
|
||||||
|
u8 vht_op_info_chwidth;
|
||||||
|
u8 vht_op_info_chan_center_freq_seg0_idx;
|
||||||
|
u8 vht_op_info_chan_center_freq_seg1_idx;
|
||||||
|
} STRUCT_PACKED;
|
||||||
|
|
||||||
|
/* HE Capabilities Information defines */
|
||||||
|
#define HE_PHYCAP_SU_BEAMFORMER_CAPAB_IDX 3
|
||||||
|
#define HE_PHYCAP_SU_BEAMFORMER_CAPAB ((u8) BIT(7))
|
||||||
|
#define HE_PHYCAP_SU_BEAMFORMEE_CAPAB_IDX 4
|
||||||
|
#define HE_PHYCAP_SU_BEAMFORMEE_CAPAB ((u8) BIT(0))
|
||||||
|
#define HE_PHYCAP_MU_BEAMFORMER_CAPAB_IDX 4
|
||||||
|
#define HE_PHYCAP_MU_BEAMFORMER_CAPAB ((u8) BIT(1))
|
||||||
|
|
||||||
|
/* HE Operation defines */
|
||||||
|
#define HE_OPERATION_BSS_COLOR_MASK ((u32) (BIT(0) | BIT(1) | \
|
||||||
|
BIT(2) | BIT(3) | \
|
||||||
|
BIT(4) | BIT(5)))
|
||||||
|
#define HE_OPERATION_DFLT_PE_DURATION_MASK ((u32) (BIT(6) | BIT(7) | \
|
||||||
|
BIT(8)))
|
||||||
|
#define HE_OPERATION_DFLT_PE_DURATION_OFFSET 6
|
||||||
|
#define HE_OPERATION_TWT_REQUIRED ((u32) BIT(9))
|
||||||
|
#define HE_OPERATION_RTS_THRESHOLD_MASK ((u32) (BIT(10) | BIT(11) | \
|
||||||
|
BIT(12) | BIT(13) | \
|
||||||
|
BIT(14) | BIT(15) | \
|
||||||
|
BIT(16) | BIT(17) | \
|
||||||
|
BIT(18) | BIT(19)))
|
||||||
|
#define HE_OPERATION_RTS_THRESHOLD_OFFSET 10
|
||||||
|
#define HE_OPERATION_PARTIAL_BSS_COLOR ((u32) BIT(20))
|
||||||
|
#define HE_OPERATION_MAX_BSSID_INDICATOR_MASK ((u32) (BIT(21) | BIT(22) | \
|
||||||
|
BIT(23) | BIT(24) | \
|
||||||
|
BIT(25) | BIT(26) | \
|
||||||
|
BIT(27) | BIT(28)))
|
||||||
|
#define HE_OPERATION_MAX_BSSID_INDICATOR_OFFSET 21
|
||||||
|
#define HE_OPERATION_TX_BSSID_INDICATOR ((u32) BIT(29))
|
||||||
|
#define HE_OPERATION_BSS_COLOR_DISABLED ((u32) BIT(30))
|
||||||
|
#define HE_OPERATION_BSS_DUAL_BEACON ((u32) BIT(31))
|
||||||
|
|
||||||
#endif /* IEEE802_11_DEFS_H */
|
#endif /* IEEE802_11_DEFS_H */
|
||||||
|
|
|
@ -136,6 +136,29 @@ struct hostapd_channel_data {
|
||||||
unsigned int dfs_cac_ms;
|
unsigned int dfs_cac_ms;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define HE_MAX_NUM_SS 8
|
||||||
|
#define HE_MAX_PHY_CAPAB_SIZE 3
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct he_ppe_threshold - IEEE 802.11ax HE PPE Threshold
|
||||||
|
*/
|
||||||
|
struct he_ppe_threshold {
|
||||||
|
u32 numss_m1;
|
||||||
|
u32 ru_count;
|
||||||
|
u32 ppet16_ppet8_ru3_ru0[HE_MAX_NUM_SS];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct he_capabilities - IEEE 802.11ax HE capabilities
|
||||||
|
*/
|
||||||
|
struct he_capabilities {
|
||||||
|
u8 he_supported;
|
||||||
|
u32 phy_cap[HE_MAX_PHY_CAPAB_SIZE];
|
||||||
|
u32 mac_cap;
|
||||||
|
u32 mcs;
|
||||||
|
struct he_ppe_threshold ppet;
|
||||||
|
};
|
||||||
|
|
||||||
#define HOSTAPD_MODE_FLAG_HT_INFO_KNOWN BIT(0)
|
#define HOSTAPD_MODE_FLAG_HT_INFO_KNOWN BIT(0)
|
||||||
#define HOSTAPD_MODE_FLAG_VHT_INFO_KNOWN BIT(1)
|
#define HOSTAPD_MODE_FLAG_VHT_INFO_KNOWN BIT(1)
|
||||||
|
|
||||||
|
@ -194,6 +217,11 @@ struct hostapd_hw_modes {
|
||||||
u8 vht_mcs_set[8];
|
u8 vht_mcs_set[8];
|
||||||
|
|
||||||
unsigned int flags; /* HOSTAPD_MODE_FLAG_* */
|
unsigned int flags; /* HOSTAPD_MODE_FLAG_* */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* he_capab - HE (IEEE 802.11ax) capabilities
|
||||||
|
*/
|
||||||
|
struct he_capabilities he_capab;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1429,6 +1457,8 @@ struct wpa_driver_capa {
|
||||||
#define WPA_DRIVER_FLAGS_MGMT_TX_RANDOM_TA_CONNECTED 0x0000800000000000ULL
|
#define WPA_DRIVER_FLAGS_MGMT_TX_RANDOM_TA_CONNECTED 0x0000800000000000ULL
|
||||||
/** Driver supports better BSS reporting with sched_scan in connected mode */
|
/** Driver supports better BSS reporting with sched_scan in connected mode */
|
||||||
#define WPA_DRIVER_FLAGS_SCHED_SCAN_RELATIVE_RSSI 0x0001000000000000ULL
|
#define WPA_DRIVER_FLAGS_SCHED_SCAN_RELATIVE_RSSI 0x0001000000000000ULL
|
||||||
|
/** Driver supports HE capabilities */
|
||||||
|
#define WPA_DRIVER_FLAGS_HE_CAPABILITIES 0x0002000000000000ULL
|
||||||
u64 flags;
|
u64 flags;
|
||||||
|
|
||||||
#define FULL_AP_CLIENT_STATE_SUPP(drv_flags) \
|
#define FULL_AP_CLIENT_STATE_SUPP(drv_flags) \
|
||||||
|
|
|
@ -851,6 +851,9 @@ L_CFLAGS += -DCONFIG_IEEE80211N
|
||||||
ifdef CONFIG_IEEE80211AC
|
ifdef CONFIG_IEEE80211AC
|
||||||
L_CFLAGS += -DCONFIG_IEEE80211AC
|
L_CFLAGS += -DCONFIG_IEEE80211AC
|
||||||
endif
|
endif
|
||||||
|
ifdef CONFIG_IEEE80211AX
|
||||||
|
L_CFLAGS += -DCONFIG_IEEE80211AX
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef NEED_AP_MLME
|
ifdef NEED_AP_MLME
|
||||||
|
|
|
@ -892,6 +892,9 @@ CFLAGS += -DCONFIG_IEEE80211N
|
||||||
ifdef CONFIG_IEEE80211AC
|
ifdef CONFIG_IEEE80211AC
|
||||||
CFLAGS += -DCONFIG_IEEE80211AC
|
CFLAGS += -DCONFIG_IEEE80211AC
|
||||||
endif
|
endif
|
||||||
|
ifdef CONFIG_IEEE80211AX
|
||||||
|
CFLAGS += -DCONFIG_IEEE80211AX
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef NEED_AP_MLME
|
ifdef NEED_AP_MLME
|
||||||
|
|
Loading…
Reference in a new issue