mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2024-11-28 10:18:21 -05:00
AP: Check driver support while auto-selecting bandwidth for AP/P2P GO
If the maximum operating channel width for AP/P2P GO is not specified, it is auto-selected during configuration. While selecting the channel width, if VHT is supported and 160 MHz channels are available, 160 MHz channel width is preferred to 80 MHz. During the selection of the channel width, the corresponding driver capabilities were not checked. As a result, the AP/P2P GO configuration was set to use the available 160 MHz channels even if the driver did not have capability to support the 160 MHz channel width causing failure to start the AP/P2P GO. Fix this by checking the driver support for the 160 MHz channel width while selecting the channel width for AP/P2P GO. Signed-off-by: Sreeramya Soratkal <ssramya@codeaurora.org>
This commit is contained in:
parent
5b782ff620
commit
ed24bad1d9
@ -44,6 +44,27 @@ static void wpas_wps_ap_pin_timeout(void *eloop_data, void *user_ctx);
|
|||||||
#endif /* CONFIG_WPS */
|
#endif /* CONFIG_WPS */
|
||||||
|
|
||||||
|
|
||||||
|
static bool is_chanwidth160_supported(struct hostapd_hw_modes *mode,
|
||||||
|
struct hostapd_config *conf)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_IEEE80211AX
|
||||||
|
if (conf->ieee80211ax) {
|
||||||
|
struct he_capabilities *he_cap;
|
||||||
|
|
||||||
|
he_cap = &mode->he_capab[IEEE80211_MODE_AP];
|
||||||
|
if (he_cap->phy_cap[HE_PHYCAP_CHANNEL_WIDTH_SET_IDX] &
|
||||||
|
(HE_PHYCAP_CHANNEL_WIDTH_SET_80PLUS80MHZ_IN_5G |
|
||||||
|
HE_PHYCAP_CHANNEL_WIDTH_SET_160MHZ_IN_5G))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_IEEE80211AX */
|
||||||
|
if (mode->vht_capab & (VHT_CAP_SUPP_CHAN_WIDTH_160MHZ |
|
||||||
|
VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ))
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
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,
|
||||||
@ -105,7 +126,7 @@ static void wpas_conf_ap_vht(struct wpa_supplicant *wpa_s,
|
|||||||
*/
|
*/
|
||||||
hostapd_set_oper_chwidth(conf, CHANWIDTH_160MHZ);
|
hostapd_set_oper_chwidth(conf, CHANWIDTH_160MHZ);
|
||||||
center_chan = wpas_p2p_get_vht160_center(wpa_s, mode, channel);
|
center_chan = wpas_p2p_get_vht160_center(wpa_s, mode, channel);
|
||||||
if (center_chan) {
|
if (center_chan && is_chanwidth160_supported(mode, conf)) {
|
||||||
wpa_printf(MSG_DEBUG,
|
wpa_printf(MSG_DEBUG,
|
||||||
"VHT center channel %u for auto-selected 160 MHz bandwidth",
|
"VHT center channel %u for auto-selected 160 MHz bandwidth",
|
||||||
center_chan);
|
center_chan);
|
||||||
|
Loading…
Reference in New Issue
Block a user