[v8,04/16] mesh: relocate RSN init function

Message ID 8cc17ddb599a3d2d457d53255cbd392be3fd95c8.1535403927.git.peter.oh@bowerswilkins.com
State New
Headers show
Series
  • mesh: enable DFS channels in mesh mode
Related show

Commit Message

Peter Oh Aug. 27, 2018, 9:28 p.m.
From: Peter Oh <peter.oh@bowerswilkins.com>

RSN init function should work together with mesh join
when it's used. Since mesh join could be called at different stage
if DFS channel is used, relocate the function to mesh join.
It is still the same call flows of mesh join before this changes
if non-DFS channels are used, hence no side effect will occur.

Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
---
 wpa_supplicant/mesh.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Patch

diff --git a/wpa_supplicant/mesh.c b/wpa_supplicant/mesh.c
index d126087..0740dc7 100644
--- a/wpa_supplicant/mesh.c
+++ b/wpa_supplicant/mesh.c
@@ -203,6 +203,12 @@  static void wpas_mesh_complete_cb(void *ctx)
 	struct wpa_ssid *ssid = wpa_s->current_ssid;
 	int ret = 0;
 
+	if (wpas_mesh_init_rsn(wpa_s)) {
+		wpa_printf(MSG_ERROR, "Init RSN failed. Deinit mesh...");
+		wpa_supplicant_mesh_deinit(wpa_s);
+		return;
+	}
+
 	if (ssid->key_mgmt & WPA_KEY_MGMT_SAE) {
 		wpa_s->pairwise_cipher = wpa_s->mesh_rsn->pairwise_cipher;
 		wpa_s->group_cipher = wpa_s->mesh_rsn->group_cipher;
@@ -373,9 +379,6 @@  static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s,
 		return -1;
 	}
 
-	if (wpas_mesh_init_rsn(wpa_s))
-		goto out_free;
-
 	wpa_supplicant_conf_ap_ht(wpa_s, ssid, conf);
 
 	return 0;