bgscan_learn: Start scanning from the first freq
authorEliad Peller <eliad@wizery.com>
Thu, 19 Dec 2013 10:03:25 +0000 (12:03 +0200)
committerJouni Malinen <j@w1.fi>
Tue, 24 Dec 2013 04:54:34 +0000 (06:54 +0200)
bgscan_learn_get_probe_freq() starts from returning the second entry in
the supp_freqs arrays. Change its logic a bit to make it start from the
first entry.

Signed-hostap: Eliad Peller <eliad@wizery.com>

wpa_supplicant/bgscan_learn.c

index 6fd81c2..fa0475d 100644 (file)
@@ -240,17 +240,14 @@ static int * bgscan_learn_get_probe_freq(struct bgscan_learn_data *data,
        if (data->supp_freqs == NULL)
                return freqs;
 
-       idx = data->probe_idx + 1;
-       while (idx != data->probe_idx) {
-               if (data->supp_freqs[idx] == 0) {
-                       if (data->probe_idx == 0)
-                               break;
-                       idx = 0;
-               }
+       idx = data->probe_idx;
+       do {
                if (!in_array(freqs, data->supp_freqs[idx])) {
                        wpa_printf(MSG_DEBUG, "bgscan learn: Probe new freq "
                                   "%u", data->supp_freqs[idx]);
-                       data->probe_idx = idx;
+                       data->probe_idx = idx + 1;
+                       if (data->supp_freqs[data->probe_idx] == 0)
+                               data->probe_idx = 0;
                        n = os_realloc_array(freqs, count + 2, sizeof(int));
                        if (n == NULL)
                                return freqs;
@@ -262,7 +259,9 @@ static int * bgscan_learn_get_probe_freq(struct bgscan_learn_data *data,
                }
 
                idx++;
-       }
+               if (data->supp_freqs[idx] == 0)
+                       idx = 0;
+       } while (idx != data->probe_idx);
 
        return freqs;
 }