f04fcc49e82b1b248c8d6d5920ba332227b6a902
[oweals/openwrt.git] /
1 From 2564184440d9d6041d11a8c7d50b31368634c3bd Mon Sep 17 00:00:00 2001
2 From: Peter Oh <peter.oh@bowerswilkins.com>
3 Date: Mon, 27 Aug 2018 14:28:40 -0700
4 Subject: [PATCH] mesh: Apply channel attributes before setup interface
5
6 This helps mesh interface initialization with correct channel
7 parameters.
8
9 Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
10 ---
11  wpa_supplicant/mesh.c | 11 ++++++++---
12  1 file changed, 8 insertions(+), 3 deletions(-)
13
14 --- a/wpa_supplicant/mesh.c
15 +++ b/wpa_supplicant/mesh.c
16 @@ -249,7 +249,7 @@ static int wpa_supplicant_mesh_init(stru
17         struct mesh_conf *mconf;
18         int basic_rates_erp[] = { 10, 20, 55, 60, 110, 120, 240, -1 };
19         int rate_len;
20 -       int frequency;
21 +       int frequency, saved_freq;
22  
23         if (!wpa_s->conf->user_mpm) {
24                 /* not much for us to do here */
25 @@ -386,6 +386,13 @@ static int wpa_supplicant_mesh_init(stru
26                 conf->basic_rates[rate_len] = -1;
27         }
28  
29 +       /* Handle pri/sec switch frequency within AP configuration parameter
30 +        * generation without changing the stored network profile in the end. */
31 +       saved_freq = ssid->frequency;
32 +       ssid->frequency = frequency;
33 +       wpa_supplicant_conf_ap_ht(wpa_s, ssid, conf);
34 +       ssid->frequency = saved_freq;
35 +
36         if (wpa_drv_init_mesh(wpa_s)) {
37                 wpa_msg(wpa_s, MSG_ERROR, "Failed to init mesh in driver");
38                 return -1;
39 @@ -397,8 +404,6 @@ static int wpa_supplicant_mesh_init(stru
40                 return -1;
41         }
42  
43 -       wpa_supplicant_conf_ap_ht(wpa_s, ssid, conf);
44 -
45         return 0;
46  out_free:
47         wpa_supplicant_mesh_deinit(wpa_s);