mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 15:32:33 +00:00
34705946e2
Drop outdated and by now broken patchset originally supplied by Peter Oh in August 2018 but never merged upstream. Instead add the more promissing rework recently submitted by Markus Theil who picked up Peter's patchset, fixed and completed it and added support for HE (802.11ax) in mesh mode. This is only compile tested and needs some real-life testing. Fixes: FS#3214 Fixes:167028b750
("hostapd: Update to version 2.9 (2019-08-08)") Fixes:0a3ec87a66
("hostapd: update to latest Git hostap_2_9-1238-gdd2daf0848ed") Fixes:017320ead3
("hostapd: bring back mesh patches") Signed-off-by: Daniel Golle <daniel@makrotopia.org>
94 lines
2.8 KiB
Diff
94 lines
2.8 KiB
Diff
From 1eab0e62920f443f8814bad846f6439843223b69 Mon Sep 17 00:00:00 2001
|
|
From: Markus Theil <markus.theil@tu-ilmenau.de>
|
|
Date: Tue, 30 Jun 2020 14:19:06 +0200
|
|
Subject: [PATCH 18/19] mesh: move mesh freq setting to own function
|
|
|
|
Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
|
|
---
|
|
wpa_supplicant/mesh.c | 59 ++++++++++++++++++++++++++-----------------
|
|
1 file changed, 36 insertions(+), 23 deletions(-)
|
|
|
|
--- a/wpa_supplicant/mesh.c
|
|
+++ b/wpa_supplicant/mesh.c
|
|
@@ -201,6 +201,40 @@ static int wpas_mesh_init_rsn(struct wpa
|
|
return !wpa_s->mesh_rsn ? -1 : 0;
|
|
}
|
|
|
|
+
|
|
+static int wpas_mesh_update_freq_params(struct wpa_supplicant *wpa_s)
|
|
+{
|
|
+ struct wpa_driver_mesh_join_params *params = wpa_s->mesh_params;
|
|
+ struct hostapd_iface *ifmsh = wpa_s->ifmsh;
|
|
+ struct he_capabilities *he_capab = NULL;
|
|
+
|
|
+ if (ifmsh->current_mode)
|
|
+ he_capab = &ifmsh->current_mode->he_capab[IEEE80211_MODE_MESH];
|
|
+
|
|
+ if (hostapd_set_freq_params(¶ms->freq,
|
|
+ ifmsh->conf->hw_mode,
|
|
+ ifmsh->freq,
|
|
+ ifmsh->conf->channel,
|
|
+ ifmsh->conf->enable_edmg,
|
|
+ ifmsh->conf->edmg_channel,
|
|
+ ifmsh->conf->ieee80211n,
|
|
+ ifmsh->conf->ieee80211ac,
|
|
+ ifmsh->conf->ieee80211ax,
|
|
+ ifmsh->conf->secondary_channel,
|
|
+ hostapd_get_oper_chwidth(ifmsh->conf),
|
|
+ hostapd_get_oper_centr_freq_seg0_idx(ifmsh->conf),
|
|
+ hostapd_get_oper_centr_freq_seg1_idx(ifmsh->conf),
|
|
+ ifmsh->conf->vht_capab,
|
|
+ he_capab)) {
|
|
+ wpa_printf(MSG_ERROR, "Error updating mesh frequency params.");
|
|
+ wpa_supplicant_mesh_deinit(wpa_s, true);
|
|
+ return -1;
|
|
+ }
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+
|
|
static int wpas_mesh_complete(struct wpa_supplicant *wpa_s)
|
|
{
|
|
struct hostapd_iface *ifmsh = wpa_s->ifmsh;
|
|
@@ -221,30 +255,8 @@ static int wpas_mesh_complete(struct wpa
|
|
if (ifmsh->freq > 0 && ifmsh->freq != params->freq.freq) {
|
|
wpa_s->assoc_freq = ifmsh->freq;
|
|
ssid->frequency = ifmsh->freq;
|
|
- struct he_capabilities *he_capab = NULL;
|
|
-
|
|
- if (ifmsh->current_mode)
|
|
- he_capab = &ifmsh->current_mode->he_capab[IEEE80211_MODE_MESH];
|
|
-
|
|
- if (hostapd_set_freq_params(¶ms->freq,
|
|
- ifmsh->conf->hw_mode,
|
|
- ifmsh->freq,
|
|
- ifmsh->conf->channel,
|
|
- ifmsh->conf->enable_edmg,
|
|
- ifmsh->conf->edmg_channel,
|
|
- ifmsh->conf->ieee80211n,
|
|
- ifmsh->conf->ieee80211ac,
|
|
- ifmsh->conf->ieee80211ax,
|
|
- ifmsh->conf->secondary_channel,
|
|
- hostapd_get_oper_chwidth(ifmsh->conf),
|
|
- hostapd_get_oper_centr_freq_seg0_idx(ifmsh->conf),
|
|
- hostapd_get_oper_centr_freq_seg1_idx(ifmsh->conf),
|
|
- ifmsh->conf->vht_capab,
|
|
- he_capab)) {
|
|
- wpa_printf(MSG_ERROR, "Error updating mesh frequency params.");
|
|
- wpa_supplicant_mesh_deinit(wpa_s, true);
|
|
+ if (wpas_mesh_update_freq_params(wpa_s) != 0)
|
|
return -1;
|
|
- }
|
|
}
|
|
|
|
if (ifmsh->mconf->security != MESH_CONF_SEC_NONE &&
|
|
@@ -518,6 +530,7 @@ static int wpa_supplicant_mesh_init(stru
|
|
}
|
|
|
|
return 0;
|
|
+
|
|
out_free:
|
|
wpa_supplicant_mesh_deinit(wpa_s, true);
|
|
return -ENOMEM;
|