summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--service/java/com/android/server/wifi/WifiInjector.java1
-rw-r--r--service/java/com/android/server/wifi/WifiMetrics.java9
-rw-r--r--service/proto/src/metrics.proto3
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java24
4 files changed, 37 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/WifiInjector.java b/service/java/com/android/server/wifi/WifiInjector.java
index 530ed1de6..4bdfc1512 100644
--- a/service/java/com/android/server/wifi/WifiInjector.java
+++ b/service/java/com/android/server/wifi/WifiInjector.java
@@ -600,6 +600,7 @@ public class WifiInjector {
mWifiThreadRunner);
mBssidBlocklistMonitor = new BssidBlocklistMonitor(mWifiConnectivityHelper,
mWifiLastResortWatchdog, mClock, mConnectivityLocalLog, mWifiScoreCard);
+ mWifiMetrics.setBssidBlocklistMonitor(mBssidBlocklistMonitor);
mWifiChannelUtilization = new WifiChannelUtilization(mClock);
return new WifiConnectivityManager(mContext, getScoringParams(),
clientModeImpl, this,
diff --git a/service/java/com/android/server/wifi/WifiMetrics.java b/service/java/com/android/server/wifi/WifiMetrics.java
index b3ba12e82..53879e515 100644
--- a/service/java/com/android/server/wifi/WifiMetrics.java
+++ b/service/java/com/android/server/wifi/WifiMetrics.java
@@ -197,6 +197,7 @@ public class WifiMetrics {
private Handler mHandler;
private ScoringParams mScoringParams;
private WifiConfigManager mWifiConfigManager;
+ private BssidBlocklistMonitor mBssidBlocklistMonitor;
private WifiNetworkSelector mWifiNetworkSelector;
private PasspointManager mPasspointManager;
private Context mContext;
@@ -729,6 +730,7 @@ public class WifiMetrics {
}
sb.append(", networkSelectorExperimentId=");
sb.append(mConnectionEvent.networkSelectorExperimentId);
+ sb.append(", numBssidInBlocklist=" + mConnectionEvent.numBssidInBlocklist);
sb.append(", level2FailureReason=");
switch(mConnectionEvent.level2FailureReason) {
case WifiMetricsProto.ConnectionEvent.AUTH_FAILURE_NONE:
@@ -832,6 +834,11 @@ public class WifiMetrics {
mWifiDataStall = wifiDataStall;
}
+ /** Sets internal BssidBlocklistMonitor member */
+ public void setBssidBlocklistMonitor(BssidBlocklistMonitor bssidBlocklistMonitor) {
+ mBssidBlocklistMonitor = bssidBlocklistMonitor;
+ }
+
/**
* Increment cumulative counters for link layer stats.
* @param newStats
@@ -1051,6 +1058,8 @@ public class WifiMetrics {
mScanResultRssi = candidate.level;
mScanResultRssiTimestampMillis = mClock.getElapsedSinceBootMillis();
}
+ mCurrentConnectionEvent.mConnectionEvent.numBssidInBlocklist =
+ mBssidBlocklistMonitor.getNumBlockedBssidsForSsid(config.SSID);
}
}
}
diff --git a/service/proto/src/metrics.proto b/service/proto/src/metrics.proto
index e943e37c4..aa0b38e22 100644
--- a/service/proto/src/metrics.proto
+++ b/service/proto/src/metrics.proto
@@ -801,6 +801,9 @@ message ConnectionEvent {
// Connection is using an aggressively generated random MAC address.
optional bool use_aggressive_mac = 14;
+
+ // Number of BSSIDs for this network that were excluded from network selection.
+ optional int32 num_bssid_in_blocklist = 15;
}
// Number of occurrences of a specific RSSI poll rssi value
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java
index c63cf487e..94d645646 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java
@@ -143,6 +143,7 @@ public class WifiMetricsTest extends WifiBaseTest {
@Mock Clock mClock;
@Mock ScoringParams mScoringParams;
@Mock WifiConfigManager mWcm;
+ @Mock BssidBlocklistMonitor mBssidBlocklistMonitor;
@Mock PasspointManager mPpm;
@Mock WifiNetworkSelector mWns;
@Mock WifiPowerMetrics mWifiPowerMetrics;
@@ -165,6 +166,7 @@ public class WifiMetricsTest extends WifiBaseTest {
new WifiAwareMetrics(mClock), new RttMetrics(mClock), mWifiPowerMetrics,
mWifiP2pMetrics, mDppMetrics);
mWifiMetrics.setWifiConfigManager(mWcm);
+ mWifiMetrics.setBssidBlocklistMonitor(mBssidBlocklistMonitor);
mWifiMetrics.setPasspointManager(mPpm);
mWifiMetrics.setScoringParams(mScoringParams);
mWifiMetrics.setWifiNetworkSelector(mWns);
@@ -1476,6 +1478,28 @@ public class WifiMetricsTest extends WifiBaseTest {
}
/**
+ * Verify the logging of number of blocked BSSIDs in ConnectionEvent.
+ */
+ @Test
+ public void testMetricNumBssidInBlocklist() throws Exception {
+ WifiConfiguration config = mock(WifiConfiguration.class);
+ config.SSID = "\"" + SSID + "\"";
+ when(config.getNetworkSelectionStatus()).thenReturn(
+ mock(WifiConfiguration.NetworkSelectionStatus.class));
+ when(mBssidBlocklistMonitor.getNumBlockedBssidsForSsid(eq(config.SSID))).thenReturn(3);
+ mWifiMetrics.startConnectionEvent(config, "RED",
+ WifiMetricsProto.ConnectionEvent.ROAM_NONE);
+ mWifiMetrics.endConnectionEvent(
+ WifiMetrics.ConnectionEvent.FAILURE_ASSOCIATION_TIMED_OUT,
+ WifiMetricsProto.ConnectionEvent.HLF_NONE,
+ WifiMetricsProto.ConnectionEvent.FAILURE_REASON_UNKNOWN);
+ dumpProtoAndDeserialize();
+
+ assertEquals(1, mDecodedProto.connectionEvent.length);
+ assertEquals(3, mDecodedProto.connectionEvent[0].numBssidInBlocklist);
+ }
+
+ /**
* Test that WifiMetrics is serializing/deserializing authentication failure events.
*/
@Test