mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2024-11-28 18:28:23 -05:00
Added IEEE 802.11n HT capability configuration (ht_capab)
This commit is contained in:
parent
ba4dc6be9e
commit
fc14f56759
@ -10,6 +10,7 @@ ChangeLog for hostapd
|
||||
the example configuration file); new hostapd_cli commands wps_pin and
|
||||
wps_pbc are used to configuration WPS negotiation; see README-WPS for
|
||||
more details
|
||||
* added IEEE 802.11n HT capability configuration (ht_capab)
|
||||
|
||||
2008-11-23 - v0.6.6
|
||||
* added a new configuration option, wpa_ptk_rekey, that can be used to
|
||||
|
@ -258,11 +258,7 @@ static struct hostapd_config * hostapd_config_defaults(void)
|
||||
conf->wme_ac_params[3] = ac_vo;
|
||||
|
||||
#ifdef CONFIG_IEEE80211N
|
||||
SET_2BIT_LE16(&conf->ht_capab,
|
||||
HT_CAP_INFO_MIMO_PWR_SAVE_OFFSET,
|
||||
MIMO_PWR_NO_LIMIT_ON_MIMO_SEQS);
|
||||
|
||||
conf->ht_capab |= HT_CAP_INFO_GREEN_FIELD;
|
||||
conf->ht_capab = HT_CAP_INFO_SMPS_DISABLED;
|
||||
#endif /* CONFIG_IEEE80211N */
|
||||
|
||||
return conf;
|
||||
@ -1313,6 +1309,58 @@ static int add_r1kh(struct hostapd_bss_config *bss, char *value)
|
||||
#endif /* CONFIG_IEEE80211R */
|
||||
|
||||
|
||||
#ifdef CONFIG_IEEE80211N
|
||||
static int hostapd_config_ht_capab(struct hostapd_config *conf,
|
||||
const char *capab)
|
||||
{
|
||||
if (os_strstr(capab, "[LDPC]"))
|
||||
conf->ht_capab |= HT_CAP_INFO_LDPC_CODING_CAP;
|
||||
if (os_strstr(capab, "[40HT]"))
|
||||
conf->ht_capab |= HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET;
|
||||
if (os_strstr(capab, "[SMPS-STATIC]")) {
|
||||
conf->ht_capab &= ~HT_CAP_INFO_SMPS_MASK;
|
||||
conf->ht_capab |= HT_CAP_INFO_SMPS_STATIC;
|
||||
}
|
||||
if (os_strstr(capab, "[SMPS-DYNAMIC]")) {
|
||||
conf->ht_capab &= ~HT_CAP_INFO_SMPS_MASK;
|
||||
conf->ht_capab |= HT_CAP_INFO_SMPS_DYNAMIC;
|
||||
}
|
||||
if (os_strstr(capab, "[GF]"))
|
||||
conf->ht_capab |= HT_CAP_INFO_GREEN_FIELD;
|
||||
if (os_strstr(capab, "[SHORT-GI-20]"))
|
||||
conf->ht_capab |= HT_CAP_INFO_SHORT_GI20MHZ;
|
||||
if (os_strstr(capab, "[SHORT-GI-40]"))
|
||||
conf->ht_capab |= HT_CAP_INFO_SHORT_GI40MHZ;
|
||||
if (os_strstr(capab, "[TX-STBC]"))
|
||||
conf->ht_capab |= HT_CAP_INFO_TX_STBC;
|
||||
if (os_strstr(capab, "[RX-STBC1]")) {
|
||||
conf->ht_capab &= ~HT_CAP_INFO_RX_STBC_MASK;
|
||||
conf->ht_capab |= HT_CAP_INFO_RX_STBC_1;
|
||||
}
|
||||
if (os_strstr(capab, "[RX-STBC12]")) {
|
||||
conf->ht_capab &= ~HT_CAP_INFO_RX_STBC_MASK;
|
||||
conf->ht_capab |= HT_CAP_INFO_RX_STBC_12;
|
||||
}
|
||||
if (os_strstr(capab, "[RX-STBC123]")) {
|
||||
conf->ht_capab &= ~HT_CAP_INFO_RX_STBC_MASK;
|
||||
conf->ht_capab |= HT_CAP_INFO_RX_STBC_123;
|
||||
}
|
||||
if (os_strstr(capab, "[DELAYED-BA]"))
|
||||
conf->ht_capab |= HT_CAP_INFO_DELAYED_BA;
|
||||
if (os_strstr(capab, "[MAX-AMSDU-7935]"))
|
||||
conf->ht_capab |= HT_CAP_INFO_MAX_AMSDU_SIZE;
|
||||
if (os_strstr(capab, "[DSSS_CCK-40]"))
|
||||
conf->ht_capab |= HT_CAP_INFO_DSSS_CCK40MHZ;
|
||||
if (os_strstr(capab, "[PSMP]"))
|
||||
conf->ht_capab |= HT_CAP_INFO_PSMP_SUPP;
|
||||
if (os_strstr(capab, "[LSIG-TXOP-PROT]"))
|
||||
conf->ht_capab |= HT_CAP_INFO_LSIG_TXOP_PROTECT_SUPPORT;
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_IEEE80211N */
|
||||
|
||||
|
||||
struct hostapd_config * hostapd_config_read(const char *fname)
|
||||
{
|
||||
struct hostapd_config *conf;
|
||||
@ -2019,6 +2067,11 @@ struct hostapd_config * hostapd_config_read(const char *fname)
|
||||
#ifdef CONFIG_IEEE80211N
|
||||
} else if (os_strcmp(buf, "ieee80211n") == 0) {
|
||||
conf->ieee80211n = atoi(pos);
|
||||
} else if (os_strcmp(buf, "ht_capab") == 0) {
|
||||
if (hostapd_config_ht_capab(conf, pos) < 0) {
|
||||
printf("Line %d: invalid ht_capab\n", line);
|
||||
errors++;
|
||||
}
|
||||
#endif /* CONFIG_IEEE80211N */
|
||||
} else if (os_strcmp(buf, "max_listen_interval") == 0) {
|
||||
bss->max_listen_interval = atoi(pos);
|
||||
|
@ -378,6 +378,27 @@ wme_ac_vo_acm=0
|
||||
# 1 = enabled
|
||||
#ieee80211n=1
|
||||
|
||||
# ht_capab: HT capabilities (list of flags)
|
||||
# LDPC coding capability: [LDPC] = supported
|
||||
# Supported channel width set: [40HT] = both 20 MHz and 40 MHz
|
||||
# (20 MHz only if not set)
|
||||
# Spatial Multiplexing (SM) Power Save: [SMPS-STATIC] or [SMPS-DYNAMIC]
|
||||
# (SMPS disabled if neither is set)
|
||||
# HT-greenfield: [GF] (disabled if not set)
|
||||
# Short GI for 20 MHz: [SHORT-GI-20] (disabled if not set)
|
||||
# Short GI for 40 MHz: [SHORT-GI-40] (disabled if not set)
|
||||
# Tx STBC: [TX-STBC] (disabled if not set)
|
||||
# Rx STBC: [RX-STBC1] (one spatial stream), [RX-STBC12] (one or two spatial
|
||||
# streams), or [RX-STBC123] (one, two, or three spatial streams); Rx STBC
|
||||
# disabled if none of these set
|
||||
# HT-delayed Block Ack: [DELAYED-BA] (disabled if not set)
|
||||
# Maximum A-MSDU length: [MAX-AMSDU-7935] for 7935 octets (3839 octets if not
|
||||
# set)
|
||||
# DSSS/CCK Mode in 40 MHz: [DSSS_CCK-40] = allowed (not allowed if not set)
|
||||
# PSMP support: [PSMP] (disabled if not set)
|
||||
# L-SIG TXOP protection support: [LSIG-TXOP-PROT] (disabled if not set)
|
||||
#ht_capab=[40HT][SHORT-GI-20][SHORT-GI-40]
|
||||
|
||||
##### IEEE 802.1X-2004 related configuration ##################################
|
||||
|
||||
# Require IEEE 802.1X authorization
|
||||
|
@ -345,10 +345,6 @@ struct ieee80211_mgmt {
|
||||
|
||||
/* HT Capability element */
|
||||
|
||||
#define MIMO_PWR_DONT_SEND_MIMO_SEQS 0
|
||||
#define MIMO_PWR_NEED2PRECEDE_MIMO_SEQS_BY_RTS 1
|
||||
#define MIMO_PWR_NO_LIMIT_ON_MIMO_SEQS 3
|
||||
|
||||
enum {
|
||||
MAX_RX_AMPDU_FACTOR_8KB = 0,
|
||||
MAX_RX_AMPDU_FACTOR_16KB,
|
||||
@ -433,12 +429,18 @@ struct ieee80211_ht_operation {
|
||||
|
||||
#define HT_CAP_INFO_LDPC_CODING_CAP ((u16) BIT(0))
|
||||
#define HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET ((u16) BIT(1))
|
||||
#define HT_CAP_INFO_MIMO_PWR_SAVE_OFFSET 2
|
||||
#define HT_CAP_INFO_SMPS_MASK ((u16) (BIT(2) | BIT(3)))
|
||||
#define HT_CAP_INFO_SMPS_STATIC ((u16) 0)
|
||||
#define HT_CAP_INFO_SMPS_DYNAMIC ((u16) BIT(2))
|
||||
#define HT_CAP_INFO_SMPS_DISABLED ((u16) (BIT(2) | BIT(3)))
|
||||
#define HT_CAP_INFO_GREEN_FIELD ((u16) BIT(4))
|
||||
#define HT_CAP_INFO_SHORT_GI20MHZ ((u16) BIT(5))
|
||||
#define HT_CAP_INFO_SHORT_GI40MHZ ((u16) BIT(6))
|
||||
#define HT_CAP_INFO_TX_STBC ((u16) BIT(7))
|
||||
#define HT_CAP_INFO_RX_STBC_OFFSET 8
|
||||
#define HT_CAP_INFO_RX_STBC_MASK ((u16) (BIT(8) | BIT(9)))
|
||||
#define HT_CAP_INFO_RX_STBC_1 ((u16) BIT(8))
|
||||
#define HT_CAP_INFO_RX_STBC_12 ((u16) BIT(9))
|
||||
#define HT_CAP_INFO_RX_STBC_123 ((u16) (BIT(8) | BIT(9)))
|
||||
#define HT_CAP_INFO_DELAYED_BA ((u16) BIT(10))
|
||||
#define HT_CAP_INFO_MAX_AMSDU_SIZE ((u16) BIT(11))
|
||||
#define HT_CAP_INFO_DSSS_CCK40MHZ ((u16) BIT(12))
|
||||
|
Loading…
Reference in New Issue
Block a user