Browse Source

Android: Fix max number of sched scan SSIDs based on driver capability

This adds use of the driver capability (instead of hardcoded
WPAS_MAX_SCAN_SSIDS) in wpas_start_pno() similarly to what was already
done in wpa_supplicant_req_sched_scan().

Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Dmitry Shmidt 9 years ago
parent
commit
f89c32e63f
1 changed files with 11 additions and 3 deletions
  1. 11 3
      wpa_supplicant/scan.c

+ 11 - 3
wpa_supplicant/scan.c

@@ -2334,10 +2334,18 @@ int wpas_start_pno(struct wpa_supplicant *wpa_s)
 	struct wpa_ssid *ssid;
 	struct wpa_ssid *ssid;
 	struct wpa_driver_scan_params params;
 	struct wpa_driver_scan_params params;
 	struct sched_scan_plan scan_plan;
 	struct sched_scan_plan scan_plan;
+	unsigned int max_sched_scan_ssids;
 
 
 	if (!wpa_s->sched_scan_supported)
 	if (!wpa_s->sched_scan_supported)
 		return -1;
 		return -1;
 
 
+	if (wpa_s->max_sched_scan_ssids > WPAS_MAX_SCAN_SSIDS)
+		max_sched_scan_ssids = WPAS_MAX_SCAN_SSIDS;
+	else
+		max_sched_scan_ssids = wpa_s->max_sched_scan_ssids;
+	if (max_sched_scan_ssids < 1)
+		return -1;
+
 	if (wpa_s->pno || wpa_s->pno_sched_pending)
 	if (wpa_s->pno || wpa_s->pno_sched_pending)
 		return 0;
 		return 0;
 
 
@@ -2381,10 +2389,10 @@ int wpas_start_pno(struct wpa_supplicant *wpa_s)
 		num_ssid++;
 		num_ssid++;
 	}
 	}
 
 
-	if (num_ssid > WPAS_MAX_SCAN_SSIDS) {
+	if (num_ssid > max_sched_scan_ssids) {
 		wpa_printf(MSG_DEBUG, "PNO: Use only the first %u SSIDs from "
 		wpa_printf(MSG_DEBUG, "PNO: Use only the first %u SSIDs from "
-			   "%u", WPAS_MAX_SCAN_SSIDS, (unsigned int) num_ssid);
-		num_ssid = WPAS_MAX_SCAN_SSIDS;
+			   "%u", max_sched_scan_ssids, (unsigned int) num_ssid);
+		num_ssid = max_sched_scan_ssids;
 	}
 	}
 
 
 	if (num_match_ssid > wpa_s->max_match_sets) {
 	if (num_match_ssid > wpa_s->max_match_sets) {