aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch
diff options
context:
space:
mode:
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.patch196
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) {
- /*