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);