]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
mesh: Apply channel attributes before setup interface
authorPeter Oh <peter.oh@bowerswilkins.com>
Mon, 27 Aug 2018 21:28:40 +0000 (14:28 -0700)
committerJouni Malinen <j@w1.fi>
Thu, 3 Jan 2019 11:13:07 +0000 (13:13 +0200)
This helps mesh interface initialization with correct channel
parameters.

Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
wpa_supplicant/mesh.c

index f92be214db8a6b2a113d1990e0c0ca1bbe30579b..e0ccb0f3f5491850529fee08dad7a9898a79f10e 100644 (file)
@@ -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);