]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
mesh: Move mesh frequency setting to its own function
authorMarkus Theil <markus.theil@tu-ilmenau.de>
Tue, 30 Jun 2020 12:19:06 +0000 (14:19 +0200)
committerJouni Malinen <j@w1.fi>
Mon, 30 Nov 2020 22:44:38 +0000 (00:44 +0200)
Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
wpa_supplicant/mesh.c

index 336ae69d0275d312416ffbcb6059af17e5b734b8..df204478b90cf20a533e194a4391788f31aee1ba 100644 (file)
@@ -204,6 +204,40 @@ static int wpas_mesh_init_rsn(struct wpa_supplicant *wpa_s)
 }
 
 
+static int wpas_mesh_update_freq_params(struct wpa_supplicant *wpa_s)
+{
+       struct wpa_driver_mesh_join_params *params = wpa_s->mesh_params;
+       struct hostapd_iface *ifmsh = wpa_s->ifmsh;
+       struct he_capabilities *he_capab = NULL;
+
+       if (ifmsh->current_mode)
+               he_capab = &ifmsh->current_mode->he_capab[IEEE80211_MODE_MESH];
+
+       if (hostapd_set_freq_params(
+                   &params->freq,
+                   ifmsh->conf->hw_mode,
+                   ifmsh->freq,
+                   ifmsh->conf->channel,
+                   ifmsh->conf->enable_edmg,
+                   ifmsh->conf->edmg_channel,
+                   ifmsh->conf->ieee80211n,
+                   ifmsh->conf->ieee80211ac,
+                   ifmsh->conf->ieee80211ax,
+                   ifmsh->conf->secondary_channel,
+                   hostapd_get_oper_chwidth(ifmsh->conf),
+                   hostapd_get_oper_centr_freq_seg0_idx(ifmsh->conf),
+                   hostapd_get_oper_centr_freq_seg1_idx(ifmsh->conf),
+                   ifmsh->conf->vht_capab,
+                   he_capab)) {
+               wpa_printf(MSG_ERROR, "Error updating mesh frequency params");
+               wpa_supplicant_mesh_deinit(wpa_s, true);
+               return -1;
+       }
+
+       return 0;
+}
+
+
 static int wpas_mesh_complete(struct wpa_supplicant *wpa_s)
 {
        struct hostapd_iface *ifmsh = wpa_s->ifmsh;
@@ -222,36 +256,10 @@ static int wpas_mesh_complete(struct wpa_supplicant *wpa_s)
         * initial setting, i.e., due to DFS radar detection during CAC.
         */
        if (ifmsh->freq > 0 && ifmsh->freq != params->freq.freq) {
-               struct he_capabilities *he_capab = NULL;
-
                wpa_s->assoc_freq = ifmsh->freq;
                ssid->frequency = ifmsh->freq;
-
-               if (ifmsh->current_mode)
-                       he_capab = &ifmsh->current_mode->he_capab[
-                               IEEE80211_MODE_MESH];
-
-               if (hostapd_set_freq_params(
-                           &params->freq,
-                           ifmsh->conf->hw_mode,
-                           ifmsh->freq,
-                           ifmsh->conf->channel,
-                           ifmsh->conf->enable_edmg,
-                           ifmsh->conf->edmg_channel,
-                           ifmsh->conf->ieee80211n,
-                           ifmsh->conf->ieee80211ac,
-                           ifmsh->conf->ieee80211ax,
-                           ifmsh->conf->secondary_channel,
-                           hostapd_get_oper_chwidth(ifmsh->conf),
-                           hostapd_get_oper_centr_freq_seg0_idx(ifmsh->conf),
-                           hostapd_get_oper_centr_freq_seg1_idx(ifmsh->conf),
-                           ifmsh->conf->vht_capab,
-                           he_capab)) {
-                       wpa_printf(MSG_ERROR,
-                                  "Error updating mesh frequency params");
-                       wpa_supplicant_mesh_deinit(wpa_s, true);
+               if (wpas_mesh_update_freq_params(wpa_s) < 0)
                        return -1;
-               }
        }
 
        if (ifmsh->mconf->security != MESH_CONF_SEC_NONE &&