summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorxshu <xshu@google.com>2020-02-12 17:39:45 -0800
committerxshu <xshu@google.com>2020-02-13 16:41:50 -0800
commit3935d9d984bf4c7ea5be6b75f22773a0abd55e5b (patch)
treecefbe884c43d494e8105340f37e0a9a33718293d /service
parent0fbeb8b4e75689b173f910f1ddc8583f363ce8d1 (diff)
BssidBlocklistMonitor success metrics
Log the histogram of number of times BSSIDs are fitered out from network selection. Bug: 149229812 Test: atest com.android.server.wifi Change-Id: Ic0add48d890151d5ec535734a7b321e0daff3ef7
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/WifiMetrics.java29
-rw-r--r--service/java/com/android/server/wifi/WifiNetworkSelector.java3
-rw-r--r--service/proto/src/metrics.proto8
3 files changed, 40 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/WifiMetrics.java b/service/java/com/android/server/wifi/WifiMetrics.java
index 6a28c3586..0f579710c 100644
--- a/service/java/com/android/server/wifi/WifiMetrics.java
+++ b/service/java/com/android/server/wifi/WifiMetrics.java
@@ -405,6 +405,7 @@ public class WifiMetrics {
private static final int[] WIFI_LOCK_SESSION_DURATION_HISTOGRAM_BUCKETS =
{1, 10, 60, 600, 3600};
private final WifiToggleStats mWifiToggleStats = new WifiToggleStats();
+ private BssidBlocklistStats mBssidBlocklistStats = new BssidBlocklistStats();
private final IntHistogram mWifiLockHighPerfAcqDurationSecHistogram =
new IntHistogram(WIFI_LOCK_SESSION_DURATION_HISTOGRAM_BUCKETS);
@@ -512,6 +513,23 @@ public class WifiMetrics {
}
}
+ class BssidBlocklistStats {
+ public IntCounter networkSelectionFilteredBssidCount = new IntCounter();
+
+ public WifiMetricsProto.BssidBlocklistStats toProto() {
+ WifiMetricsProto.BssidBlocklistStats proto = new WifiMetricsProto.BssidBlocklistStats();
+ proto.networkSelectionFilteredBssidCount = networkSelectionFilteredBssidCount.toProto();
+ return proto;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("networkSelectionFilteredBssidCount=" + networkSelectionFilteredBssidCount);
+ return sb.toString();
+ }
+ }
+
/**
* Log event, tracking the start time, end time and result of a wireless connection attempt.
*/
@@ -2678,6 +2696,8 @@ public class WifiMetrics {
pw.println("mWifiLogProto.observed80211mcSupportingApsInScanHistogram"
+ mObserved80211mcApInScanHistogram);
+ pw.println("mWifiLogProto.bssidBlocklistStats:");
+ pw.println(mBssidBlocklistStats.toString());
pw.println("mSoftApTetheredEvents:");
for (SoftApConnectedClientsEvent event : mSoftApEventListTethered) {
@@ -3397,6 +3417,7 @@ public class WifiMetrics {
if (healthMonitorMetrics != null) {
mWifiLogProto.healthMonitorMetrics = healthMonitorMetrics;
}
+ mWifiLogProto.bssidBlocklistStats = mBssidBlocklistStats.toProto();
}
}
@@ -3591,6 +3612,7 @@ public class WifiMetrics {
mWifiToggleStats.clear();
mPasspointProvisionFailureCounts.clear();
mNumProvisionSuccess = 0;
+ mBssidBlocklistStats = new BssidBlocklistStats();
}
}
@@ -5079,6 +5101,13 @@ public class WifiMetrics {
}
/**
+ * Add to the histogram of number of BSSIDs filtered out from network selection.
+ */
+ public void incrementNetworkSelectionFilteredBssidCount(int numBssid) {
+ mBssidBlocklistStats.networkSelectionFilteredBssidCount.increment(numBssid);
+ }
+
+ /**
* Increment number of passpoint provision success
*/
public void incrementPasspointProvisionSuccess() {
diff --git a/service/java/com/android/server/wifi/WifiNetworkSelector.java b/service/java/com/android/server/wifi/WifiNetworkSelector.java
index 2194dad2b..98e00e811 100644
--- a/service/java/com/android/server/wifi/WifiNetworkSelector.java
+++ b/service/java/com/android/server/wifi/WifiNetworkSelector.java
@@ -359,6 +359,7 @@ public class WifiNetworkSelector {
StringBuffer lowRssi = new StringBuffer();
StringBuffer mboAssociationDisallowedBssid = new StringBuffer();
boolean scanResultsHaveCurrentBssid = false;
+ int numBssidFiltered = 0;
for (ScanDetail scanDetail : scanDetails) {
ScanResult scanResult = scanDetail.getScanResult();
@@ -377,6 +378,7 @@ public class WifiNetworkSelector {
if (bssidBlacklist.contains(scanResult.BSSID)) {
blacklistedBssid.append(scanId).append(" / ");
+ numBssidFiltered++;
continue;
}
@@ -402,6 +404,7 @@ public class WifiNetworkSelector {
validScanDetails.add(scanDetail);
}
+ mWifiMetrics.incrementNetworkSelectionFilteredBssidCount(numBssidFiltered);
// WNS listens to all single scan results. Some scan requests may not include
// the channel of the currently connected network, so the currently connected
diff --git a/service/proto/src/metrics.proto b/service/proto/src/metrics.proto
index 6870f6a5e..8989b3bfa 100644
--- a/service/proto/src/metrics.proto
+++ b/service/proto/src/metrics.proto
@@ -579,6 +579,9 @@ message WifiLog {
// Metrics collected by health monitor
optional HealthMonitorMetrics health_monitor_metrics = 158;
+
+ // Metrics related to the BssidBlocklistMonitor
+ optional BssidBlocklistStats bssid_blocklist_stats = 159;
}
// Information that gets logged for every WiFi connection.
@@ -1841,6 +1844,11 @@ message ExperimentValues {
optional int32 data_stall_cca_level_thr = 9;
}
+message BssidBlocklistStats {
+ // Distributions of number of blocked BSSIDs filtered out from network selection.
+ repeated Int32Count network_selection_filtered_bssid_count = 1;
+}
+
message WifiIsUnusableEvent {
enum TriggerType {
// Default/Invalid event