From 2564184440d9d6041d11a8c7d50b31368634c3bd Mon Sep 17 00:00:00 2001 From: Peter Oh 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 --- wpa_supplicant/mesh.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/wpa_supplicant/mesh.c b/wpa_supplicant/mesh.c index f92be214d..e0ccb0f3f 100644 --- a/wpa_supplicant/mesh.c +++ b/wpa_supplicant/mesh.c @@ -251,7 +251,7 @@ static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s, 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 */ @@ -372,6 +372,13 @@ static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s, 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; @@ -383,8 +390,6 @@ static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s, return -1; } - wpa_supplicant_conf_ap_ht(wpa_s, ssid, conf); - return 0; out_free: wpa_supplicant_mesh_deinit(wpa_s);