mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2025-01-17 18:34:03 -05:00
Introduce 60 GHz band
Basic support for the 60 GHz band. Neither P2P nor WPS are yet taken care off. Allows to start AP with very simple config: network={ ssid="test" mode=2 frequency=60480 key_mgmt=NONE } Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
058da39cc9
commit
7829894c21
@ -2313,6 +2313,8 @@ static int hostapd_config_fill(struct hostapd_config *conf,
|
|||||||
conf->hw_mode = HOSTAPD_MODE_IEEE80211B;
|
conf->hw_mode = HOSTAPD_MODE_IEEE80211B;
|
||||||
else if (os_strcmp(pos, "g") == 0)
|
else if (os_strcmp(pos, "g") == 0)
|
||||||
conf->hw_mode = HOSTAPD_MODE_IEEE80211G;
|
conf->hw_mode = HOSTAPD_MODE_IEEE80211G;
|
||||||
|
else if (os_strcmp(pos, "ad") == 0)
|
||||||
|
conf->hw_mode = HOSTAPD_MODE_IEEE80211AD;
|
||||||
else {
|
else {
|
||||||
wpa_printf(MSG_ERROR, "Line %d: unknown "
|
wpa_printf(MSG_ERROR, "Line %d: unknown "
|
||||||
"hw_mode '%s'", line, pos);
|
"hw_mode '%s'", line, pos);
|
||||||
|
@ -106,6 +106,8 @@ ssid=test
|
|||||||
#ieee80211d=1
|
#ieee80211d=1
|
||||||
|
|
||||||
# Operation mode (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g,
|
# Operation mode (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g,
|
||||||
|
# ad = IEEE 802.11ad (60 GHz); a/g options are used with IEEE 802.11n, too, to
|
||||||
|
# specify band)
|
||||||
# Default: IEEE 802.11b
|
# Default: IEEE 802.11b
|
||||||
hw_mode=g
|
hw_mode=g
|
||||||
|
|
||||||
|
@ -122,6 +122,8 @@ int hostapd_prepare_rates(struct hostapd_iface *iface,
|
|||||||
case HOSTAPD_MODE_IEEE80211G:
|
case HOSTAPD_MODE_IEEE80211G:
|
||||||
basic_rates = basic_rates_g;
|
basic_rates = basic_rates_g;
|
||||||
break;
|
break;
|
||||||
|
case HOSTAPD_MODE_IEEE80211AD:
|
||||||
|
return 0; /* No basic rates for 11ad */
|
||||||
default:
|
default:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -756,6 +758,8 @@ const char * hostapd_hw_mode_txt(int mode)
|
|||||||
return "IEEE 802.11b";
|
return "IEEE 802.11b";
|
||||||
case HOSTAPD_MODE_IEEE80211G:
|
case HOSTAPD_MODE_IEEE80211G:
|
||||||
return "IEEE 802.11g";
|
return "IEEE 802.11g";
|
||||||
|
case HOSTAPD_MODE_IEEE80211AD:
|
||||||
|
return "IEEE 802.11ad";
|
||||||
default:
|
default:
|
||||||
return "UNKNOWN";
|
return "UNKNOWN";
|
||||||
}
|
}
|
||||||
|
@ -354,6 +354,8 @@ void ieee802_1x_tx_key(struct hostapd_data *hapd, struct sta_info *sta)
|
|||||||
const char *radius_mode_txt(struct hostapd_data *hapd)
|
const char *radius_mode_txt(struct hostapd_data *hapd)
|
||||||
{
|
{
|
||||||
switch (hapd->iface->conf->hw_mode) {
|
switch (hapd->iface->conf->hw_mode) {
|
||||||
|
case HOSTAPD_MODE_IEEE80211AD:
|
||||||
|
return "802.11ad";
|
||||||
case HOSTAPD_MODE_IEEE80211A:
|
case HOSTAPD_MODE_IEEE80211A:
|
||||||
return "802.11a";
|
return "802.11a";
|
||||||
case HOSTAPD_MODE_IEEE80211G:
|
case HOSTAPD_MODE_IEEE80211G:
|
||||||
|
@ -297,6 +297,7 @@ enum hostapd_hw_mode {
|
|||||||
HOSTAPD_MODE_IEEE80211B,
|
HOSTAPD_MODE_IEEE80211B,
|
||||||
HOSTAPD_MODE_IEEE80211G,
|
HOSTAPD_MODE_IEEE80211G,
|
||||||
HOSTAPD_MODE_IEEE80211A,
|
HOSTAPD_MODE_IEEE80211A,
|
||||||
|
HOSTAPD_MODE_IEEE80211AD,
|
||||||
NUM_HOSTAPD_MODES
|
NUM_HOSTAPD_MODES
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -4974,19 +4974,35 @@ static int phy_info_handler(struct nl_msg *msg, void *arg)
|
|||||||
/* crude heuristic */
|
/* crude heuristic */
|
||||||
if (mode->channels[idx].freq < 4000)
|
if (mode->channels[idx].freq < 4000)
|
||||||
mode->mode = HOSTAPD_MODE_IEEE80211B;
|
mode->mode = HOSTAPD_MODE_IEEE80211B;
|
||||||
|
else if (mode->channels[idx].freq > 50000)
|
||||||
|
mode->mode = HOSTAPD_MODE_IEEE80211AD;
|
||||||
else
|
else
|
||||||
mode->mode = HOSTAPD_MODE_IEEE80211A;
|
mode->mode = HOSTAPD_MODE_IEEE80211A;
|
||||||
mode_is_set = 1;
|
mode_is_set = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* crude heuristic */
|
switch (mode->mode) {
|
||||||
if (mode->channels[idx].freq < 4000)
|
case HOSTAPD_MODE_IEEE80211AD:
|
||||||
|
mode->channels[idx].chan =
|
||||||
|
(mode->channels[idx].freq - 56160) /
|
||||||
|
2160;
|
||||||
|
break;
|
||||||
|
case HOSTAPD_MODE_IEEE80211A:
|
||||||
|
mode->channels[idx].chan =
|
||||||
|
mode->channels[idx].freq / 5 - 1000;
|
||||||
|
break;
|
||||||
|
case HOSTAPD_MODE_IEEE80211B:
|
||||||
|
case HOSTAPD_MODE_IEEE80211G:
|
||||||
if (mode->channels[idx].freq == 2484)
|
if (mode->channels[idx].freq == 2484)
|
||||||
mode->channels[idx].chan = 14;
|
mode->channels[idx].chan = 14;
|
||||||
else
|
else
|
||||||
mode->channels[idx].chan = (mode->channels[idx].freq - 2407) / 5;
|
mode->channels[idx].chan =
|
||||||
else
|
(mode->channels[idx].freq -
|
||||||
mode->channels[idx].chan = mode->channels[idx].freq/5 - 1000;
|
2407) / 5;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (tb_freq[NL80211_FREQUENCY_ATTR_DISABLED])
|
if (tb_freq[NL80211_FREQUENCY_ATTR_DISABLED])
|
||||||
mode->channels[idx].flag |=
|
mode->channels[idx].flag |=
|
||||||
|
@ -63,6 +63,10 @@ static int wpa_supplicant_conf_ap(struct wpa_supplicant *wpa_s,
|
|||||||
(ssid->frequency >= 5745 && ssid->frequency <= 5825)) {
|
(ssid->frequency >= 5745 && ssid->frequency <= 5825)) {
|
||||||
conf->hw_mode = HOSTAPD_MODE_IEEE80211A;
|
conf->hw_mode = HOSTAPD_MODE_IEEE80211A;
|
||||||
conf->channel = (ssid->frequency - 5000) / 5;
|
conf->channel = (ssid->frequency - 5000) / 5;
|
||||||
|
} else if (ssid->frequency >= 56160 + 2160 * 1 &&
|
||||||
|
ssid->frequency <= 56160 + 2160 * 4) {
|
||||||
|
conf->hw_mode = HOSTAPD_MODE_IEEE80211AD;
|
||||||
|
conf->channel = (ssid->frequency - 56160) / 2160;
|
||||||
} else {
|
} else {
|
||||||
wpa_printf(MSG_ERROR, "Unsupported AP mode frequency: %d MHz",
|
wpa_printf(MSG_ERROR, "Unsupported AP mode frequency: %d MHz",
|
||||||
ssid->frequency);
|
ssid->frequency);
|
||||||
|
@ -1627,7 +1627,7 @@ static const struct parse_data ssid_fields[] = {
|
|||||||
#endif /* CONFIG_IEEE80211W */
|
#endif /* CONFIG_IEEE80211W */
|
||||||
{ INT_RANGE(peerkey, 0, 1) },
|
{ INT_RANGE(peerkey, 0, 1) },
|
||||||
{ INT_RANGE(mixed_cell, 0, 1) },
|
{ INT_RANGE(mixed_cell, 0, 1) },
|
||||||
{ INT_RANGE(frequency, 0, 10000) },
|
{ INT_RANGE(frequency, 0, 65000) },
|
||||||
{ INT(wpa_ptk_rekey) },
|
{ INT(wpa_ptk_rekey) },
|
||||||
{ STR(bgscan) },
|
{ STR(bgscan) },
|
||||||
{ INT_RANGE(ignore_broadcast_ssid, 0, 2) },
|
{ INT_RANGE(ignore_broadcast_ssid, 0, 2) },
|
||||||
|
@ -2765,6 +2765,9 @@ static int ctrl_iface_get_capability_channels(struct wpa_supplicant *wpa_s,
|
|||||||
case HOSTAPD_MODE_IEEE80211A:
|
case HOSTAPD_MODE_IEEE80211A:
|
||||||
hmode = "A";
|
hmode = "A";
|
||||||
break;
|
break;
|
||||||
|
case HOSTAPD_MODE_IEEE80211AD:
|
||||||
|
hmode = "AD";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user