From d8cc34290cb74db931e0fceaf3e0ec4b8a380716 Mon Sep 17 00:00:00 2001 From: xshu Date: Fri, 8 Nov 2019 15:45:36 -0800 Subject: Add SSID hotlist in DeviceConfig Reads from DeviceConfig and parses a comma separated of SSIDs. Bug: 144172117 Test: atest FrameworksWifiTests Test: Manually tested on device Change-Id: I20f940b73a5b8d6818653b634e3a4e8d66ff4018 --- .../android/server/wifi/DeviceConfigFacade.java | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'service') diff --git a/service/java/com/android/server/wifi/DeviceConfigFacade.java b/service/java/com/android/server/wifi/DeviceConfigFacade.java index c5ca3c913..1c59797fe 100644 --- a/service/java/com/android/server/wifi/DeviceConfigFacade.java +++ b/service/java/com/android/server/wifi/DeviceConfigFacade.java @@ -19,10 +19,13 @@ package com.android.server.wifi; import android.content.Context; import android.os.Handler; import android.provider.DeviceConfig; +import android.util.ArraySet; import com.android.internal.annotations.VisibleForTesting; import com.android.wifi.R; +import java.util.Collections; +import java.util.Set; import java.util.concurrent.TimeUnit; /** @@ -60,6 +63,7 @@ public class DeviceConfigFacade { private int mDataStallRxTputThrKbps; private int mDataStallTxPerThr; private int mDataStallCcaLevelThr; + private Set mRandomizationFlakySsidHotlist; public DeviceConfigFacade(Context context, Handler handler, WifiMetrics wifiMetrics) { mContext = context; @@ -101,6 +105,25 @@ public class DeviceConfigFacade { mWifiMetrics.setDataStallRxTputThrKbps(mDataStallRxTputThrKbps); mWifiMetrics.setDataStallTxPerThr(mDataStallTxPerThr); mWifiMetrics.setDataStallCcaLevelThr(mDataStallCcaLevelThr); + + createUnmodifiableRandomizationFlakySsidHotlist(); + } + + private void createUnmodifiableRandomizationFlakySsidHotlist() { + String ssidHotlist = DeviceConfig.getString(NAMESPACE, + "randomization_flaky_ssid_hotlist", ""); + mRandomizationFlakySsidHotlist = new ArraySet(); + String[] ssidHotlistArray = ssidHotlist.split(","); + for (int i = 0; i < ssidHotlistArray.length; i++) { + String cur = ssidHotlistArray[i]; + if (cur.length() == 0) { + continue; + } + // Make sure the SSIDs are quoted. Server side should not quote ssids. + mRandomizationFlakySsidHotlist.add("\"" + cur + "\""); + } + mRandomizationFlakySsidHotlist = + Collections.unmodifiableSet(mRandomizationFlakySsidHotlist); } /** @@ -158,4 +181,11 @@ public class DeviceConfigFacade { public int getDataStallCcaLevelThr() { return mDataStallCcaLevelThr; } + + /** + * Gets the Set of SSIDs in the flaky SSID hotlist. + */ + public Set getRandomizationFlakySsidHotlist() { + return mRandomizationFlakySsidHotlist; + } } -- cgit v1.2.3 From a522b345fa15716a21fd9edcf523cf3c1331dd94 Mon Sep 17 00:00:00 2001 From: xshu Date: Tue, 12 Nov 2019 14:04:42 -0800 Subject: Detect networks in SSID hotlist Add infrastructure support to detect networks that are known to not support randomized MACs. Bug: 144172117 Test: atest FrameworksWifiTests Test: Manually tested on device Change-Id: Ie42ce853810aa5dfd4eef89dff281740dafaf3be --- service/java/com/android/server/wifi/WifiConfigManager.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'service') diff --git a/service/java/com/android/server/wifi/WifiConfigManager.java b/service/java/com/android/server/wifi/WifiConfigManager.java index 0b4ea8811..18b5562b3 100644 --- a/service/java/com/android/server/wifi/WifiConfigManager.java +++ b/service/java/com/android/server/wifi/WifiConfigManager.java @@ -1674,6 +1674,19 @@ public class WifiConfigManager { return false; } + /** + * Check whether a network belong to a known list of networks that may not support randomized + * MAC. + * @param networkId + * @return true if the network is in the hotlist and MAC randomization is enabled. + */ + public boolean isInFlakyRandomizationSsidHotlist(int networkId) { + WifiConfiguration config = getConfiguredNetwork(networkId); + return config != null + && config.macRandomizationSetting == WifiConfiguration.RANDOMIZATION_PERSISTENT + && mDeviceConfigFacade.getRandomizationFlakySsidHotlist().contains(config.SSID); + } + /** * Helper method to mark a network enabled for network selection. */ -- cgit v1.2.3