hostapd: Update to version 2021-04-04
[openwrt/staging/hauke.git] / package / network / services / hostapd / patches / 008-mesh-use-setup-completion-callback-to-complete-mesh-.patch
diff --git a/package/network/services/hostapd/patches/008-mesh-use-setup-completion-callback-to-complete-mesh-.patch b/package/network/services/hostapd/patches/008-mesh-use-setup-completion-callback-to-complete-mesh-.patch
deleted file mode 100644 (file)
index ee1e1b0..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-From f1df4fbfc7ad3d8c18a8c9fe5c71628f2ed09bb7 Mon Sep 17 00:00:00 2001
-From: Peter Oh <peter.oh@bowerswilkins.com>
-Date: Tue, 30 Jun 2020 14:18:56 +0200
-Subject: mesh: Use setup completion callback to complete mesh join
-
-Mesh join function is the last function to be called during mesh join
-process, but it's been called a bit earlier than it's supposed to be, so
-that some mesh parameter values such as VHT capabilities were not
-applied correct when mesh join is in process. Moreover, the current
-design of mesh join that is called directly after mesh initialization
-isn't suitable for DFS channels to use, since mesh join process should
-be paused until DFS CAC is done and resumed after it's done.
-
-The callback will be called by hostapd_setup_interface_complete_sync().
-There is a possibility that completing mesh init fails, so add error
-handling codes for that.
-
-Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
----
- src/ap/hostapd.c      | 11 ++++++++++-
- wpa_supplicant/mesh.c | 12 +++++++++++-
- 2 files changed, 21 insertions(+), 2 deletions(-)
-
---- a/src/ap/hostapd.c
-+++ b/src/ap/hostapd.c
-@@ -434,6 +434,8 @@ static void hostapd_free_hapd_data(struc
- #ifdef CONFIG_MESH
-       wpabuf_free(hapd->mesh_pending_auth);
-       hapd->mesh_pending_auth = NULL;
-+      /* handling setup failure is already done */
-+      hapd->setup_complete_cb = NULL;
- #endif /* CONFIG_MESH */
-       hostapd_clean_rrm(hapd);
-@@ -2156,6 +2158,13 @@ dfs_offload:
-       if (hapd->setup_complete_cb)
-               hapd->setup_complete_cb(hapd->setup_complete_cb_ctx);
-+#ifdef CONFIG_MESH
-+      if (delay_apply_cfg && !iface->mconf) {
-+              wpa_printf(MSG_ERROR, "Error while completing mesh init");
-+              goto fail;
-+      }
-+#endif /* CONFIG_MESH */
-+
-       wpa_printf(MSG_DEBUG, "%s: Setup of interface done.",
-                  iface->bss[0]->conf->iface);
-       if (iface->interfaces && iface->interfaces->terminate_on_error > 0)
-@@ -2299,7 +2308,7 @@ int hostapd_setup_interface(struct hosta
-       ret = setup_interface(iface);
-       if (ret) {
-               wpa_printf(MSG_ERROR, "%s: Unable to setup interface.",
--                         iface->bss[0]->conf->iface);
-+                         iface->conf ? iface->conf->bss[0]->iface : "N/A");
-               return -1;
-       }
---- a/wpa_supplicant/mesh.c
-+++ b/wpa_supplicant/mesh.c
-@@ -244,6 +244,14 @@ static int wpas_mesh_complete(struct wpa
- }
-+static void wpas_mesh_complete_cb(void *arg)
-+{
-+      struct wpa_supplicant *wpa_s = arg;
-+
-+      wpas_mesh_complete(wpa_s);
-+}
-+
-+
- static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s,
-                                   struct wpa_ssid *ssid,
-                                   struct hostapd_freq_params *freq)
-@@ -267,6 +275,7 @@ static int wpa_supplicant_mesh_init(stru
-       if (!ifmsh)
-               return -ENOMEM;
-+      ifmsh->owner = wpa_s;
-       ifmsh->drv_flags = wpa_s->drv_flags;
-       ifmsh->drv_flags2 = wpa_s->drv_flags2;
-       ifmsh->num_bss = 1;
-@@ -285,6 +294,8 @@ static int wpa_supplicant_mesh_init(stru
-       bss->drv_priv = wpa_s->drv_priv;
-       bss->iface = ifmsh;
-       bss->mesh_sta_free_cb = mesh_mpm_free_sta;
-+      bss->setup_complete_cb = wpas_mesh_complete_cb;
-+      bss->setup_complete_cb_ctx = wpa_s;
-       frequency = ssid->frequency;
-       if (frequency != freq->freq &&
-           frequency == freq->freq + freq->sec_channel_offset * 20) {
-@@ -525,7 +536,6 @@ int wpa_supplicant_join_mesh(struct wpa_
-               goto out;
-       }
--      ret = wpas_mesh_complete(wpa_s);
- out:
-       return ret;
- }