]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
WNM: Refactor wnm_set_scan_freqs()
authorAvraham Stern <avraham.stern@intel.com>
Tue, 5 Aug 2025 15:13:16 +0000 (17:13 +0200)
committerJouni Malinen <j@w1.fi>
Mon, 6 Oct 2025 17:38:38 +0000 (20:38 +0300)
Use int_array_add_unique() instead of the dedicated add_freq(), which
now can be removed. This also allows removing some local variables
that are no longer needed.

Signed-off-by: Avraham Stern <avraham.stern@intel.com>
Reviewed-by: Otcheretianski, Andrei <andrei.otcheretianski@intel.com>
Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
wpa_supplicant/wnm_sta.c
wpa_supplicant/wpa_supplicant.c
wpa_supplicant/wpa_supplicant_i.h

index 64e857377f7e3ee3c25e05a39118ea3cfaf61b83..8c8f243d5ad33a797530aaf06fc481b3c9f47dd8 100644 (file)
@@ -1338,8 +1338,6 @@ static int chan_supported(struct wpa_supplicant *wpa_s, int freq)
 
 static void wnm_set_scan_freqs(struct wpa_supplicant *wpa_s)
 {
-       int *freqs;
-       int num_freqs = 0;
        unsigned int i;
 
        if (!wpa_s->wnm_neighbor_report_elements)
@@ -1351,10 +1349,6 @@ static void wnm_set_scan_freqs(struct wpa_supplicant *wpa_s)
        os_free(wpa_s->next_scan_freqs);
        wpa_s->next_scan_freqs = NULL;
 
-       freqs = os_calloc(wpa_s->wnm_num_neighbor_report + 1, sizeof(int));
-       if (freqs == NULL)
-               return;
-
        for (i = 0; i < wpa_s->wnm_num_neighbor_report; i++) {
                struct neighbor_report *nei;
 
@@ -1368,22 +1362,21 @@ static void wnm_set_scan_freqs(struct wpa_supplicant *wpa_s)
                                   "WNM: Unknown neighbor operating frequency for "
                                   MACSTR " - scan all channels",
                                   MAC2STR(nei->bssid));
-                       os_free(freqs);
+                       os_free(wpa_s->next_scan_freqs);
+                       wpa_s->next_scan_freqs = NULL;
                        return;
                }
                if (chan_supported(wpa_s, nei->freq))
-                       add_freq(freqs, &num_freqs, nei->freq);
+                       int_array_add_unique(&wpa_s->next_scan_freqs,
+                                            nei->freq);
        }
 
-       if (num_freqs == 0) {
-               os_free(freqs);
+       if (!wpa_s->next_scan_freqs)
                return;
-       }
 
        wpa_printf(MSG_DEBUG,
-                  "WNM: Scan %d frequencies based on transition candidate list",
-                  num_freqs);
-       wpa_s->next_scan_freqs = freqs;
+                  "WNM: Scan %zu frequencies based on transition candidate list",
+                  int_array_len(wpa_s->next_scan_freqs));
 }
 
 
index bbd3e1a053cc26c462b9235d77262c2bbd2966ac..672bbd876afa21d3b003727e3b038d3acadd620a 100644 (file)
@@ -8769,20 +8769,6 @@ void wpa_supplicant_update_config(struct wpa_supplicant *wpa_s)
 }
 
 
-void add_freq(int *freqs, int *num_freqs, int freq)
-{
-       int i;
-
-       for (i = 0; i < *num_freqs; i++) {
-               if (freqs[i] == freq)
-                       return;
-       }
-
-       freqs[*num_freqs] = freq;
-       (*num_freqs)++;
-}
-
-
 void wpas_connection_failed(struct wpa_supplicant *wpa_s, const u8 *bssid,
                            const u8 **link_bssids)
 {
index cf27add7245bac20cf576f6066db342ffe2870c0..106964df9f9d3e31435c0fadb9f1ae5d355c5dc0 100644 (file)
@@ -1764,7 +1764,6 @@ int wpas_update_random_addr(struct wpa_supplicant *wpa_s,
                            enum wpas_mac_addr_style style,
                            struct wpa_ssid *ssid);
 int wpas_update_random_addr_disassoc(struct wpa_supplicant *wpa_s);
-void add_freq(int *freqs, int *num_freqs, int freq);
 
 int wpas_get_op_chan_phy(int freq, const u8 *ies, size_t ies_len,
                         u8 *op_class, u8 *chan, u8 *phy_type);