diff options
author | Daniel Golle <daniel@makrotopia.org> | 2018-04-12 13:07:22 +0200 |
---|---|---|
committer | Daniel Golle <daniel@makrotopia.org> | 2018-04-13 03:27:01 +0200 |
commit | d88934aa5aa9b61ec66a6f7ae0fb61d1ef889884 (patch) | |
tree | aa77211ec0f1b6add8ea048d789fb1061f9089b5 /package/network/services/hostapd/patches/0102-mesh-factor-out-rsn-initialization.patch | |
parent | b28e995fc736a78adda9e3c554653c795bd408b0 (diff) | |
download | mtk-20170518-d88934aa5aa9b61ec66a6f7ae0fb61d1ef889884.zip mtk-20170518-d88934aa5aa9b61ec66a6f7ae0fb61d1ef889884.tar.gz mtk-20170518-d88934aa5aa9b61ec66a6f7ae0fb61d1ef889884.tar.bz2 |
hostapd: update to git snapshot of 2018-04-09
And import patchset to allow 802.11s mesh on DFS channels, see also
http://lists.infradead.org/pipermail/hostap/2018-April/038418.html
Fix sae_password for encryption mesh (sent upstream as well).
Also refreshed existing patches and fixed 463-add-mcast_rate-to-11s.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Diffstat (limited to 'package/network/services/hostapd/patches/0102-mesh-factor-out-rsn-initialization.patch')
-rw-r--r-- | package/network/services/hostapd/patches/0102-mesh-factor-out-rsn-initialization.patch | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/package/network/services/hostapd/patches/0102-mesh-factor-out-rsn-initialization.patch b/package/network/services/hostapd/patches/0102-mesh-factor-out-rsn-initialization.patch new file mode 100644 index 0000000..75717a5 --- /dev/null +++ b/package/network/services/hostapd/patches/0102-mesh-factor-out-rsn-initialization.patch @@ -0,0 +1,115 @@ +From 04ebcadc059a6cfd45cd8ec06e6321b69bdb68b8 Mon Sep 17 00:00:00 2001 +From: Peter Oh <peter.oh@bowerswilkins.com> +Date: Thu, 12 Apr 2018 02:48:59 -0700 +Subject: [PATCH 02/15] mesh: factor out rsn initialization + +RSN initialization can be used in different phases +if mesh initialization and mesh join don't happen +in sequence such as DFS CAC is done in between, +hence factor it out to help convering the case. + +Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com> +--- + wpa_supplicant/mesh.c | 73 ++++++++++++++++++++++++++----------------- + wpa_supplicant/mesh.h | 1 + + 2 files changed, 45 insertions(+), 29 deletions(-) + +--- a/wpa_supplicant/mesh.c ++++ b/wpa_supplicant/mesh.c +@@ -147,6 +147,48 @@ static void wpas_mesh_copy_groups(struct + groups_size); + } + ++int wpas_mesh_init_rsn(struct wpa_supplicant *wpa_s) ++{ ++ struct hostapd_iface *ifmsh = wpa_s->ifmsh; ++ struct mesh_conf *mconf = wpa_s->ifmsh->mconf; ++ struct wpa_ssid *ssid = wpa_s->current_ssid; ++ struct hostapd_data *bss = ifmsh->bss[0]; ++ static int default_groups[] = { 19, 20, 21, 25, 26, -1 }; ++ size_t len; ++ ++ if (mconf->security != MESH_CONF_SEC_NONE) { ++ if (ssid->passphrase == NULL) { ++ wpa_printf(MSG_ERROR, ++ "mesh: Passphrase for SAE not configured"); ++ return -1; ++ } ++ ++ bss->conf->wpa = ssid->proto; ++ bss->conf->wpa_key_mgmt = ssid->key_mgmt; ++ ++ if (wpa_s->conf->sae_groups && ++ wpa_s->conf->sae_groups[0] > 0) { ++ wpas_mesh_copy_groups(bss, wpa_s); ++ } else { ++ bss->conf->sae_groups = ++ os_memdup(default_groups, ++ sizeof(default_groups)); ++ if (!bss->conf->sae_groups) ++ return -1; ++ } ++ ++ len = os_strlen(ssid->passphrase); ++ bss->conf->ssid.wpa_passphrase = ++ dup_binstr(ssid->passphrase, len); ++ ++ wpa_s->mesh_rsn = mesh_rsn_auth_init(wpa_s, mconf); ++ if (!wpa_s->mesh_rsn) ++ return -1; ++ } ++ ++ return 0; ++} ++ + + static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s, + struct wpa_ssid *ssid, +@@ -291,35 +333,8 @@ static int wpa_supplicant_mesh_init(stru + return -1; + } + +- if (mconf->security != MESH_CONF_SEC_NONE) { +- if (ssid->passphrase == NULL) { +- wpa_printf(MSG_ERROR, +- "mesh: Passphrase for SAE not configured"); +- goto out_free; +- } +- +- bss->conf->wpa = ssid->proto; +- bss->conf->wpa_key_mgmt = ssid->key_mgmt; +- +- if (wpa_s->conf->sae_groups && +- wpa_s->conf->sae_groups[0] > 0) { +- wpas_mesh_copy_groups(bss, wpa_s); +- } else { +- bss->conf->sae_groups = +- os_memdup(default_groups, +- sizeof(default_groups)); +- if (!bss->conf->sae_groups) +- goto out_free; +- } +- +- len = os_strlen(ssid->passphrase); +- bss->conf->ssid.wpa_passphrase = +- dup_binstr(ssid->passphrase, len); +- +- wpa_s->mesh_rsn = mesh_rsn_auth_init(wpa_s, mconf); +- if (!wpa_s->mesh_rsn) +- goto out_free; +- } ++ if (wpas_mesh_init_rsn(wpa_s)) ++ goto out_free; + + wpa_supplicant_conf_ap_ht(wpa_s, ssid, conf); + +--- a/wpa_supplicant/mesh.h ++++ b/wpa_supplicant/mesh.h +@@ -22,6 +22,7 @@ int wpas_mesh_peer_remove(struct wpa_sup + int wpas_mesh_peer_add(struct wpa_supplicant *wpa_s, const u8 *addr, + int duration); + void wpas_join_mesh(struct wpa_supplicant *wpa_s); ++int wpas_mesh_init_rsn(struct wpa_supplicant *wpa_s); + + #ifdef CONFIG_MESH + |