summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2016-05-09 22:28:01 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-05-09 22:28:01 +0000
commit0a75995008f38ebce1be028f19b8c084571aaac7 (patch)
tree3dff0648c799681359083f4d3e804a0e4162ab24
parent1fd2481ce2b3287adb41a2db8c5de1eb2e919489 (diff)
parentb53cd9aa2625ec2a1c2e69c609d8a9dda3569a36 (diff)
Merge "SupplicantScanner: Truncate hidden network list" into nyc-dev
am: b53cd9aa26 * commit 'b53cd9aa2625ec2a1c2e69c609d8a9dda3569a36': SupplicantScanner: Truncate hidden network list Change-Id: I9cc1904d580058fdde66348a39d22dc5dc01923b
-rw-r--r--service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java10
-rw-r--r--tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java23
2 files changed, 31 insertions, 2 deletions
diff --git a/service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java b/service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java
index c4e19f5a5..4b2d68fce 100644
--- a/service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java
+++ b/service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java
@@ -51,6 +51,8 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
public static final String BACKGROUND_PERIOD_ALARM_TAG = TAG + " Background Scan Period";
public static final String TIMEOUT_ALARM_TAG = TAG + " Scan Timeout";
+ // Max number of networks that can be specified to wpa_supplicant per scan request
+ public static final int MAX_HIDDEN_NETWORK_IDS_PER_SCAN = 16;
private static final int SCAN_BUFFER_CAPACITY = 10;
private static final int MAX_APS_PER_SCAN = 32;
@@ -383,7 +385,9 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
int[] hiddenNetworkIds = mBackgroundScanSettings.hiddenNetworkIds;
if (hiddenNetworkIds != null) {
- for (int i = 0; i < hiddenNetworkIds.length; i++) {
+ int numHiddenNetworkIds = Math.min(hiddenNetworkIds.length,
+ MAX_HIDDEN_NETWORK_IDS_PER_SCAN);
+ for (int i = 0; i < numHiddenNetworkIds; i++) {
hiddenNetworkIdSet.add(hiddenNetworkIds[i]);
}
}
@@ -414,7 +418,9 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
mPendingSingleScanEventHandler);
int[] hiddenNetworkIds = mPendingSingleScanSettings.hiddenNetworkIds;
if (hiddenNetworkIds != null) {
- for (int i = 0; i < hiddenNetworkIds.length; i++) {
+ int numHiddenNetworkIds = Math.min(hiddenNetworkIds.length,
+ MAX_HIDDEN_NETWORK_IDS_PER_SCAN);
+ for (int i = 0; i < numHiddenNetworkIds; i++) {
hiddenNetworkIdSet.add(hiddenNetworkIds[i]);
}
}
diff --git a/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java b/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java
index 04684d932..15d1465f0 100644
--- a/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java
@@ -167,6 +167,29 @@ public abstract class BaseWifiScannerImplTest {
ScanResults.create(0, 5650, 5650, 5650, 5650, 5650, 5650, 5650, 5650), false);
}
+ /**
+ * Tests whether the provided hidden networkId's in scan settings is truncated to max size
+ * supported by wpa_supplicant when invoking native scan.
+ */
+ @Test
+ public void singleScanSuccessWithTruncatedHiddenNetworkIds() {
+ int[] hiddenNetworkIds = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
+ WifiNative.ScanSettings settings = new NativeScanSettingsBuilder()
+ .withBasePeriod(10000)
+ .withMaxApPerScan(10)
+ .withHiddenNetworkIds(hiddenNetworkIds)
+ .addBucketWithChannels(20000, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN, 5650)
+ .build();
+
+ Set<Integer> hiddenNetworkIdSet = new HashSet<Integer>();
+ for (int i = 0; i < SupplicantWifiScannerImpl.MAX_HIDDEN_NETWORK_IDS_PER_SCAN; i++) {
+ hiddenNetworkIdSet.add(hiddenNetworkIds[i]);
+ }
+ doSuccessfulSingleScanTest(settings, createFreqSet(5650),
+ hiddenNetworkIdSet,
+ ScanResults.create(0, 5650, 5650, 5650, 5650, 5650, 5650, 5650, 5650), false);
+ }
+
@Test
public void overlappingSingleScanFails() {
WifiNative.ScanSettings settings = new NativeScanSettingsBuilder()