hostapd: Perform multi-BSS CSA for DFS properly
authorMichal Kazior <michal.kazior@tieto.com>
Fri, 27 Jun 2014 12:19:29 +0000 (14:19 +0200)
committerJouni Malinen <j@w1.fi>
Sat, 28 Jun 2014 08:08:16 +0000 (11:08 +0300)
Currently hostapd data structures aren't ready for multi-channel BSSes,
so make DFS work now at least with single-channel multi-BSS channel
switching.

Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
src/ap/dfs.c

index 9f42a77..a11b2cf 100644 (file)
@@ -774,7 +774,7 @@ static int hostapd_dfs_start_channel_switch(struct hostapd_iface *iface)
        u8 vht_oper_centr_freq_seg1_idx;
        int skip_radar = 1;
        struct csa_settings csa_settings;
-       struct hostapd_data *hapd = iface->bss[0];
+       unsigned int i;
        int err = 1;
 
        wpa_printf(MSG_DEBUG, "%s called (CAC active: %s, CSA active: %s)",
@@ -853,7 +853,12 @@ static int hostapd_dfs_start_channel_switch(struct hostapd_iface *iface)
                return err;
        }
 
-       err = hostapd_switch_channel(hapd, &csa_settings);
+       for (i = 0; i < iface->num_bss; i++) {
+               err = hostapd_switch_channel(iface->bss[i], &csa_settings);
+               if (err)
+                       break;
+       }
+
        if (err) {
                wpa_printf(MSG_WARNING, "DFS failed to schedule CSA (%d) - trying fallback",
                           err);