]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
ACS: Extend interference factor calculation for all modes
authorNeo Jou <neojou@gmail.com>
Mon, 13 Jan 2020 08:31:28 +0000 (16:31 +0800)
committerJouni Malinen <j@w1.fi>
Sat, 29 Feb 2020 09:23:03 +0000 (11:23 +0200)
This is preparation for being able to support hw_mode=any to select the
best channel from any supported mode.

Signed-off-by: Neo Jou <neojou@gmail.com>
src/ap/acs.c

index 2a18769366e6b425598307ace5489dd4da860b7d..6554ec239053a9ab340c6242ec7cc22000d6f042 100644 (file)
@@ -512,14 +512,14 @@ static int is_in_chanlist(struct hostapd_iface *iface,
 }
 
 
-static void acs_survey_all_chans_interference_factor(
-       struct hostapd_iface *iface)
+static void acs_survey_mode_interference_factor(
+       struct hostapd_iface *iface, struct hostapd_hw_modes *mode)
 {
        int i;
        struct hostapd_channel_data *chan;
 
-       for (i = 0; i < iface->current_mode->num_channels; i++) {
-               chan = &iface->current_mode->channels[i];
+       for (i = 0; i < mode->num_channels; i++) {
+               chan = &mode->channels[i];
 
                if (!acs_usable_chan(chan))
                        continue;
@@ -538,6 +538,20 @@ static void acs_survey_all_chans_interference_factor(
 }
 
 
+static void acs_survey_all_chans_interference_factor(
+       struct hostapd_iface *iface)
+{
+       int i;
+       struct hostapd_hw_modes *mode;
+
+       for (i = 0; i < iface->num_hw_features; i++) {
+               mode = &iface->hw_features[i];
+               if (!hostapd_hw_skip_mode(iface, mode))
+                       acs_survey_mode_interference_factor(iface, mode);
+       }
+}
+
+
 static struct hostapd_channel_data *
 acs_find_chan_mode(struct hostapd_hw_modes *mode, int freq)
 {