From 2564184440d9d6041d11a8c7d50b31368634c3bd Mon Sep 17 00:00:00 2001
From: Peter Oh <peter.oh@bowerswilkins.com>
Date: Mon, 27 Aug 2018 14:28:40 -0700
Subject: [PATCH] mesh: Apply channel attributes before setup interface

This helps mesh interface initialization with correct channel
parameters.

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

--- a/wpa_supplicant/mesh.c
+++ b/wpa_supplicant/mesh.c
@@ -249,7 +249,7 @@ static int wpa_supplicant_mesh_init(stru
 	struct mesh_conf *mconf;
 	int basic_rates_erp[] = { 10, 20, 55, 60, 110, 120, 240, -1 };
 	int rate_len;
-	int frequency;
+	int frequency, saved_freq;
 
 	if (!wpa_s->conf->user_mpm) {
 		/* not much for us to do here */
@@ -386,6 +386,13 @@ static int wpa_supplicant_mesh_init(stru
 		conf->basic_rates[rate_len] = -1;
 	}
 
+	/* Handle pri/sec switch frequency within AP configuration parameter
+	 * generation without changing the stored network profile in the end. */
+	saved_freq = ssid->frequency;
+	ssid->frequency = frequency;
+	wpa_supplicant_conf_ap_ht(wpa_s, ssid, conf);
+	ssid->frequency = saved_freq;
+
 	if (wpa_drv_init_mesh(wpa_s)) {
 		wpa_msg(wpa_s, MSG_ERROR, "Failed to init mesh in driver");
 		return -1;
@@ -397,8 +404,6 @@ static int wpa_supplicant_mesh_init(stru
 		return -1;
 	}
 
-	wpa_supplicant_conf_ap_ht(wpa_s, ssid, conf);
-
 	return 0;
 out_free:
 	wpa_supplicant_mesh_deinit(wpa_s);
