]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Drop sched_scan filter if not enough match sets supported
authorJouni Malinen <jouni@qca.qualcomm.com>
Mon, 28 Nov 2011 15:52:36 +0000 (17:52 +0200)
committerJouni Malinen <j@w1.fi>
Mon, 28 Nov 2011 15:52:36 +0000 (17:52 +0200)
Instead of including only a single SSID in the sched_scan request if
the driver does not support match sets, just drop the SSID filter and
configure more SSIDs up to the sched_scan limit.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

wpa_supplicant/scan.c

index 8fe5996db3dec4148f71a501e9cee07b457ac5bb..6d519010a85b29f5a3be9410105ab32bb458bbcd 100644 (file)
@@ -764,6 +764,13 @@ int wpa_supplicant_req_sched_scan(struct wpa_supplicant *wpa_s)
                        params.filter_ssids[params.num_filter_ssids].ssid_len =
                                ssid->ssid_len;
                        params.num_filter_ssids++;
+               } else if (params.filter_ssids && ssid->ssid && ssid->ssid_len)
+               {
+                       wpa_dbg(wpa_s, MSG_DEBUG, "Not enough room for SSID "
+                               "filter for sched_scan - drop filter");
+                       os_free(params.filter_ssids);
+                       params.filter_ssids = NULL;
+                       params.num_filter_ssids = 0;
                }
 
                if (ssid->scan_ssid && ssid->ssid && ssid->ssid_len) {
@@ -781,8 +788,6 @@ int wpa_supplicant_req_sched_scan(struct wpa_supplicant *wpa_s)
                        }
                }
 
-               if (params.num_filter_ssids >= wpa_s->max_match_sets)
-                       break;
                wpa_s->prev_sched_ssid = ssid;
                ssid = ssid->next;
        }