summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/ClientModeImpl.java14
-rw-r--r--service/java/com/android/server/wifi/WifiMetrics.java68
-rw-r--r--service/proto/src/metrics.proto11
3 files changed, 93 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java
index 727676880..ac1c8d0b4 100644
--- a/service/java/com/android/server/wifi/ClientModeImpl.java
+++ b/service/java/com/android/server/wifi/ClientModeImpl.java
@@ -2965,6 +2965,20 @@ public class ClientModeImpl extends StateMachine {
}
}
+ if (configuration != null
+ && configuration.carrierId != TelephonyManager.UNKNOWN_CARRIER_ID) {
+ if (level2FailureCode == WifiMetrics.ConnectionEvent.FAILURE_NONE) {
+ mWifiMetrics.incrementNumOfCarrierWifiConnectionSuccess();
+ } else if (level2FailureCode
+ == WifiMetrics.ConnectionEvent.FAILURE_AUTHENTICATION_FAILURE
+ && level2FailureReason
+ != WifiMetricsProto.ConnectionEvent.AUTH_FAILURE_NONE) {
+ mWifiMetrics.incrementNumOfCarrierWifiConnectionAuthFailure();
+ } else {
+ mWifiMetrics.incrementNumOfCarrierWifiConnectionNonAuthFailure();
+ }
+ }
+
boolean isAssociationRejection = level2FailureCode
== WifiMetrics.ConnectionEvent.FAILURE_ASSOCIATION_REJECTION;
boolean isAuthenticationFailure = level2FailureCode
diff --git a/service/java/com/android/server/wifi/WifiMetrics.java b/service/java/com/android/server/wifi/WifiMetrics.java
index 0559326b1..dbd532541 100644
--- a/service/java/com/android/server/wifi/WifiMetrics.java
+++ b/service/java/com/android/server/wifi/WifiMetrics.java
@@ -62,6 +62,7 @@ import com.android.server.wifi.hotspot2.Utils;
import com.android.server.wifi.p2p.WifiP2pMetrics;
import com.android.server.wifi.proto.WifiStatsLog;
import com.android.server.wifi.proto.nano.WifiMetricsProto;
+import com.android.server.wifi.proto.nano.WifiMetricsProto.CarrierWifiMetrics;
import com.android.server.wifi.proto.nano.WifiMetricsProto.ConnectToNetworkNotificationAndActionCount;
import com.android.server.wifi.proto.nano.WifiMetricsProto.DeviceMobilityStatePnoScanStats;
import com.android.server.wifi.proto.nano.WifiMetricsProto.ExperimentValues;
@@ -500,6 +501,9 @@ public class WifiMetrics {
private final SoftApConfigLimitationMetrics mSoftApConfigLimitationMetrics =
new SoftApConfigLimitationMetrics();
+ private final CarrierWifiMetrics mCarrierWifiMetrics =
+ new CarrierWifiMetrics();
+
@VisibleForTesting
static class NetworkSelectionExperimentResults {
public static final int MAX_CHOICES = 10;
@@ -1185,6 +1189,38 @@ public class WifiMetrics {
}
}
+ class CarrierWifiMetrics {
+ public int numConnectionSuccess = 0;
+ public int numConnectionAuthFailure = 0;
+ public int numConnectionNonAuthFailure = 0;
+
+ public WifiMetricsProto.CarrierWifiMetrics toProto() {
+ WifiMetricsProto.CarrierWifiMetrics proto =
+ new WifiMetricsProto.CarrierWifiMetrics();
+ proto.numConnectionSuccess = numConnectionSuccess;
+ proto.numConnectionAuthFailure = numConnectionAuthFailure;
+ proto.numConnectionNonAuthFailure = numConnectionNonAuthFailure;
+ return proto;
+ }
+
+ public void clear() {
+ numConnectionSuccess = 0;
+ numConnectionAuthFailure = 0;
+ numConnectionNonAuthFailure = 0;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("numConnectionSuccess=")
+ .append(numConnectionSuccess)
+ .append(", numConnectionAuthFailure=")
+ .append(numConnectionAuthFailure)
+ .append(", numConnectionNonAuthFailure")
+ .append(numConnectionNonAuthFailure);
+ return sb.toString();
+ }
+ }
public WifiMetrics(Context context, FrameworkFacade facade, Clock clock, Looper looper,
WifiAwareMetrics awareMetrics, RttMetrics rttMetrics,
@@ -3646,6 +3682,8 @@ public class WifiMetrics {
+ mTxThroughputMbpsHistogramAbove2G);
pw.println("mRxThroughputMbpsHistogramAbove2G:\n"
+ mRxThroughputMbpsHistogramAbove2G);
+ pw.println("mCarrierWifiMetrics:\n"
+ + mCarrierWifiMetrics);
dumpInitPartialScanMetrics(pw);
}
@@ -4321,6 +4359,8 @@ public class WifiMetrics {
initialPartialScanStats.failedScanChannelCountHistogram =
mInitPartialScanFailureHistogram.toProto();
mWifiLogProto.initPartialScanStats = initialPartialScanStats;
+
+ mWifiLogProto.carrierWifiMetrics = mCarrierWifiMetrics.toProto();
}
}
@@ -4538,6 +4578,7 @@ public class WifiMetrics {
mInitPartialScanFailureCount = 0;
mInitPartialScanSuccessHistogram.clear();
mInitPartialScanFailureHistogram.clear();
+ mCarrierWifiMetrics.clear();
}
}
@@ -6461,4 +6502,31 @@ public class WifiMetrics {
mWifiLogProto.numBssidDifferentSelectionBetweenFrameworkAndFirmware++;
}
}
+
+ /**
+ * Note the carrier wifi network connected successfully.
+ */
+ public void incrementNumOfCarrierWifiConnectionSuccess() {
+ synchronized (mLock) {
+ mCarrierWifiMetrics.numConnectionSuccess++;
+ }
+ }
+
+ /**
+ * Note the carrier wifi network connection authentication failure.
+ */
+ public void incrementNumOfCarrierWifiConnectionAuthFailure() {
+ synchronized (mLock) {
+ mCarrierWifiMetrics.numConnectionAuthFailure++;
+ }
+ }
+
+ /**
+ * Note the carrier wifi network connection non-authentication failure.
+ */
+ public void incrementNumOfCarrierWifiConnectionNonAuthFailure() {
+ synchronized (mLock) {
+ mCarrierWifiMetrics.numConnectionNonAuthFailure++;
+ }
+ }
}
diff --git a/service/proto/src/metrics.proto b/service/proto/src/metrics.proto
index 8755271f7..eaea7342b 100644
--- a/service/proto/src/metrics.proto
+++ b/service/proto/src/metrics.proto
@@ -709,6 +709,9 @@ message WifiLog {
// Number of connection with different BSSID between framework and firmware selection.
optional int32 num_bssid_different_selection_between_framework_and_firmware = 199;
+
+ // Metrics about carrier wifi network.
+ optional CarrierWifiMetrics carrier_wifi_metrics = 200;
}
// Information that gets logged for every WiFi connection.
@@ -3295,3 +3298,11 @@ message UserReactionToApprovalUiEvent {
// Event of user reaction to the carrier approval UI.
repeated UserReaction user_approval_carrier_ui_reaction = 2;
}
+
+message CarrierWifiMetrics {
+ // Number of successful network connection using Carrier ID
+ optional int32 num_connection_success = 1;
+ // Number of failed authentication from network connection using Carrier ID
+ optional int32 num_connection_auth_failure = 2;
+ optional int32 num_connection_non_auth_failure = 3;
+}