diff options
Diffstat (limited to 'package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch')
-rw-r--r-- | package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch | 196 |
1 files changed, 0 insertions, 196 deletions
diff --git a/package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch b/package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch deleted file mode 100644 index 37c17c50af..0000000000 --- a/package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch +++ /dev/null @@ -1,196 +0,0 @@ -From 91976250359b263a44861aebe553b20627fe487e Mon Sep 17 00:00:00 2001 -From: Markus Theil <markus.theil@tu-ilmenau.de> -Date: Tue, 30 Jun 2020 13:53:17 +0200 -Subject: [PATCH 01/19] HE/VHT: fix frequency setup with HE enabled - -Some places in the code base were not using the -wrappers like hostapd_set_oper_centr_freq_seg0_idx -and friends. This could lead to errors, for example when -joining 80 MHz mesh networks. Fix this, by enforcing -usage of these wrappers. - -wpa_supplicant_conf_ap_ht now checks for HE capability -before dealing with VHT in order for these wrappers to work, -as they first check HE support in the config. - -While doing these changes, I've noticed that the extra -channel setup code for mesh networks in wpa_supplicant/mesh.c -should not be necessary anymore and dropped it. -wpa_supplicant_conf_ap_ht should handle this setup already. - -Acked-by: John Crispin <john@phrozen.org> -Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de> ---- - src/ap/dfs.c | 8 ++++---- - wpa_supplicant/ap.c | 40 +++++++++++++++++++++++----------------- - wpa_supplicant/mesh.c | 24 ------------------------ - 3 files changed, 27 insertions(+), 45 deletions(-) - ---- a/src/ap/dfs.c -+++ b/src/ap/dfs.c -@@ -1028,7 +1028,7 @@ static int hostapd_dfs_start_channel_swi - unsigned int i; - int err = 1; - struct hostapd_hw_modes *cmode = iface->current_mode; -- u8 current_vht_oper_chwidth = iface->conf->vht_oper_chwidth; -+ u8 current_vht_oper_chwidth = hostapd_get_oper_chwidth(iface->conf); - - wpa_printf(MSG_DEBUG, "%s called (CAC active: %s, CSA active: %s)", - __func__, iface->cac_started ? "yes" : "no", -@@ -1089,8 +1089,8 @@ static int hostapd_dfs_start_channel_swi - "freq=%d chan=%d sec_chan=%d", channel->freq, - channel->chan, secondary_channel); - -- new_vht_oper_chwidth = iface->conf->vht_oper_chwidth; -- iface->conf->vht_oper_chwidth = current_vht_oper_chwidth; -+ new_vht_oper_chwidth = hostapd_get_oper_chwidth(iface->conf); -+ hostapd_set_oper_chwidth(iface->conf, current_vht_oper_chwidth); - - /* Setup CSA request */ - os_memset(&csa_settings, 0, sizeof(csa_settings)); -@@ -1130,7 +1130,7 @@ static int hostapd_dfs_start_channel_swi - iface->freq = channel->freq; - iface->conf->channel = channel->chan; - iface->conf->secondary_channel = secondary_channel; -- iface->conf->vht_oper_chwidth = new_vht_oper_chwidth; -+ hostapd_set_oper_chwidth(iface->conf, new_vht_oper_chwidth); - hostapd_set_oper_centr_freq_seg0_idx(iface->conf, - oper_centr_freq_seg0_idx); - hostapd_set_oper_centr_freq_seg1_idx(iface->conf, ---- a/wpa_supplicant/ap.c -+++ b/wpa_supplicant/ap.c -@@ -52,6 +52,7 @@ static void wpas_conf_ap_vht(struct wpa_ - #ifdef CONFIG_P2P - u8 center_chan = 0; - u8 channel = conf->channel; -+ u8 freq_seg_idx; - #endif /* CONFIG_P2P */ - - if (!conf->secondary_channel) -@@ -59,19 +60,21 @@ static void wpas_conf_ap_vht(struct wpa_ - - /* Use the maximum oper channel width if it's given. */ - if (ssid->max_oper_chwidth) -- conf->vht_oper_chwidth = ssid->max_oper_chwidth; -+ hostapd_set_oper_chwidth(conf, ssid->max_oper_chwidth); - - ieee80211_freq_to_chan(ssid->vht_center_freq2, -- &conf->vht_oper_centr_freq_seg1_idx); -+ &freq_seg_idx); -+ hostapd_set_oper_centr_freq_seg1_idx(conf, freq_seg_idx); - - if (!ssid->p2p_group) { - if (!ssid->vht_center_freq1 || -- conf->vht_oper_chwidth == CHANWIDTH_USE_HT) -+ hostapd_get_oper_chwidth(conf) == CHANWIDTH_USE_HT) - goto no_vht; - ieee80211_freq_to_chan(ssid->vht_center_freq1, -- &conf->vht_oper_centr_freq_seg0_idx); -+ &freq_seg_idx); -+ hostapd_set_oper_centr_freq_seg0_idx(conf, freq_seg_idx); - wpa_printf(MSG_DEBUG, "VHT seg0 index %d for AP", -- conf->vht_oper_centr_freq_seg0_idx); -+ hostapd_get_oper_centr_freq_seg0_idx(conf)); - return; - } - -@@ -96,14 +99,14 @@ static void wpas_conf_ap_vht(struct wpa_ - * try oper_cwidth 160 MHz first then VHT 80 MHz, if 160 MHz is - * not supported. - */ -- conf->vht_oper_chwidth = CHANWIDTH_160MHZ; -+ hostapd_set_oper_chwidth(conf, CHANWIDTH_160MHZ); - center_chan = wpas_p2p_get_vht160_center(wpa_s, mode, channel); - if (center_chan) { - wpa_printf(MSG_DEBUG, - "VHT center channel %u for auto-selected 160 MHz bandwidth", - center_chan); - } else { -- conf->vht_oper_chwidth = CHANWIDTH_80MHZ; -+ hostapd_set_oper_chwidth(conf, CHANWIDTH_80MHZ); - center_chan = wpas_p2p_get_vht80_center(wpa_s, mode, - channel); - wpa_printf(MSG_DEBUG, -@@ -115,9 +118,9 @@ static void wpas_conf_ap_vht(struct wpa_ - if (!center_chan) - goto no_vht; - -- conf->vht_oper_centr_freq_seg0_idx = center_chan; -+ hostapd_set_oper_centr_freq_seg0_idx(conf, center_chan); - wpa_printf(MSG_DEBUG, "VHT seg0 index %d for P2P GO", -- conf->vht_oper_centr_freq_seg0_idx); -+ hostapd_get_oper_centr_freq_seg0_idx(conf)); - return; - #endif /* CONFIG_P2P */ - -@@ -125,9 +128,9 @@ no_vht: - wpa_printf(MSG_DEBUG, - "No VHT higher bandwidth support for the selected channel %d", - conf->channel); -- conf->vht_oper_centr_freq_seg0_idx = -- conf->channel + conf->secondary_channel * 2; -- conf->vht_oper_chwidth = CHANWIDTH_USE_HT; -+ hostapd_set_oper_centr_freq_seg0_idx(conf, -+ conf->channel + conf->secondary_channel * 2); -+ hostapd_set_oper_chwidth(conf, CHANWIDTH_USE_HT); - } - - -@@ -231,16 +234,19 @@ int wpa_supplicant_conf_ap_ht(struct wpa - HT_CAP_INFO_TX_STBC | - HT_CAP_INFO_MAX_AMSDU_SIZE); - -+ /* check this before VHT, because setting oper chan -+ * width and friends is the same call for HE and VHT -+ * and checks if conf->ieee8021ax == 1 */ -+ if (mode->he_capab[wpas_mode_to_ieee80211_mode( -+ ssid->mode)].he_supported && -+ ssid->he) -+ conf->ieee80211ax = 1; -+ - if (mode->vht_capab && ssid->vht) { - conf->ieee80211ac = 1; - conf->vht_capab |= mode->vht_capab; - wpas_conf_ap_vht(wpa_s, ssid, conf, mode); - } -- -- if (mode->he_capab[wpas_mode_to_ieee80211_mode( -- ssid->mode)].he_supported && -- ssid->he) -- conf->ieee80211ax = 1; - } - } - ---- a/wpa_supplicant/mesh.c -+++ b/wpa_supplicant/mesh.c -@@ -333,30 +333,6 @@ static int wpa_supplicant_mesh_init(stru - frequency); - goto out_free; - } -- if (ssid->ht40) -- conf->secondary_channel = ssid->ht40; -- if (conf->hw_mode == HOSTAPD_MODE_IEEE80211A && ssid->vht) { -- if (ssid->max_oper_chwidth != DEFAULT_MAX_OPER_CHWIDTH) -- conf->vht_oper_chwidth = ssid->max_oper_chwidth; -- switch (conf->vht_oper_chwidth) { -- case CHANWIDTH_80MHZ: -- case CHANWIDTH_80P80MHZ: -- ieee80211_freq_to_chan( -- frequency, -- &conf->vht_oper_centr_freq_seg0_idx); -- conf->vht_oper_centr_freq_seg0_idx += ssid->ht40 * 2; -- break; -- case CHANWIDTH_160MHZ: -- ieee80211_freq_to_chan( -- frequency, -- &conf->vht_oper_centr_freq_seg0_idx); -- conf->vht_oper_centr_freq_seg0_idx += ssid->ht40 * 2; -- conf->vht_oper_centr_freq_seg0_idx += 40 / 5; -- break; -- } -- ieee80211_freq_to_chan(ssid->vht_center_freq2, -- &conf->vht_oper_centr_freq_seg1_idx); -- } - - if (ssid->mesh_basic_rates == NULL) { - /* |