diff --git a/core/java/android/net/metrics/WakeupStats.java b/core/java/android/net/metrics/WakeupStats.java
index d520b97..97e83f9 100644
--- a/core/java/android/net/metrics/WakeupStats.java
+++ b/core/java/android/net/metrics/WakeupStats.java
@@ -35,7 +35,7 @@
     public long systemWakeups = 0;
     public long nonApplicationWakeups = 0;
     public long applicationWakeups = 0;
-    public long unroutedWakeups = 0;
+    public long noUidWakeups = 0;
     public long durationSec = 0;
 
     public WakeupStats(String iface) {
@@ -58,7 +58,7 @@
                 systemWakeups++;
                 break;
             case NO_UID:
-                unroutedWakeups++;
+                noUidWakeups++;
                 break;
             default:
                 if (ev.uid >= Process.FIRST_APPLICATION_UID) {
@@ -80,7 +80,7 @@
                 .append(", system: ").append(systemWakeups)
                 .append(", apps: ").append(applicationWakeups)
                 .append(", non-apps: ").append(nonApplicationWakeups)
-                .append(", unrouted: ").append(unroutedWakeups)
+                .append(", no uid: ").append(noUidWakeups)
                 .append(", ").append(durationSec).append("s)")
                 .toString();
     }
diff --git a/proto/src/ipconnectivity.proto b/proto/src/ipconnectivity.proto
index 777468a..437da8f 100644
--- a/proto/src/ipconnectivity.proto
+++ b/proto/src/ipconnectivity.proto
@@ -501,8 +501,8 @@
   // between [1001, 9999]. See android.os.Process for possible uids.
   optional int64 non_application_wakeups = 6;
 
-  // The total number of wakeup packets with no associated sockets.
-  optional int64 unrouted_wakeups = 7;
+  // The total number of wakeup packets with no associated socket or uid.
+  optional int64 no_uid_wakeups = 7;
 }
 
 // Represents one of the IP connectivity event defined in this file.
diff --git a/services/core/java/com/android/server/connectivity/IpConnectivityEventBuilder.java b/services/core/java/com/android/server/connectivity/IpConnectivityEventBuilder.java
index 22330e6..67e7216 100644
--- a/services/core/java/com/android/server/connectivity/IpConnectivityEventBuilder.java
+++ b/services/core/java/com/android/server/connectivity/IpConnectivityEventBuilder.java
@@ -126,7 +126,7 @@
         wakeupStats.systemWakeups = in.systemWakeups;
         wakeupStats.nonApplicationWakeups = in.nonApplicationWakeups;
         wakeupStats.applicationWakeups = in.applicationWakeups;
-        wakeupStats.unroutedWakeups = in.unroutedWakeups;
+        wakeupStats.noUidWakeups = in.noUidWakeups;
         final IpConnectivityEvent out = buildEvent(0, 0, in.iface);
         out.setWakeupStats(wakeupStats);
         return out;
diff --git a/services/core/java/com/android/server/connectivity/NetdEventListenerService.java b/services/core/java/com/android/server/connectivity/NetdEventListenerService.java
index 6f7ace2..25dba35 100644
--- a/services/core/java/com/android/server/connectivity/NetdEventListenerService.java
+++ b/services/core/java/com/android/server/connectivity/NetdEventListenerService.java
@@ -170,11 +170,11 @@
             timestampMs = System.currentTimeMillis();
         }
 
-        addWakupEvent(iface, timestampMs, uid);
+        addWakeupEvent(iface, timestampMs, uid);
     }
 
     @GuardedBy("this")
-    private void addWakupEvent(String iface, long timestampMs, int uid) {
+    private void addWakeupEvent(String iface, long timestampMs, int uid) {
         int index = wakeupEventIndex(mWakeupEventCursor);
         mWakeupEventCursor++;
         WakeupEvent event = new WakeupEvent();
diff --git a/tests/net/java/com/android/server/connectivity/IpConnectivityEventBuilderTest.java b/tests/net/java/com/android/server/connectivity/IpConnectivityEventBuilderTest.java
index f72a1c6..2624176 100644
--- a/tests/net/java/com/android/server/connectivity/IpConnectivityEventBuilderTest.java
+++ b/tests/net/java/com/android/server/connectivity/IpConnectivityEventBuilderTest.java
@@ -512,7 +512,7 @@
         stats.nonApplicationWakeups = 1;
         stats.rootWakeups = 2;
         stats.systemWakeups = 3;
-        stats.unroutedWakeups = 3;
+        stats.noUidWakeups = 3;
 
         IpConnectivityEvent got = IpConnectivityEventBuilder.toProto(stats);
         String want = String.join("\n",
@@ -526,11 +526,11 @@
                 "  wakeup_stats <",
                 "    application_wakeups: 5",
                 "    duration_sec: 0",
+                "    no_uid_wakeups: 3",
                 "    non_application_wakeups: 1",
                 "    root_wakeups: 2",
                 "    system_wakeups: 3",
                 "    total_wakeups: 14",
-                "    unrouted_wakeups: 3",
                 "  >",
                 ">",
                 "version: 2\n");
diff --git a/tests/net/java/com/android/server/connectivity/IpConnectivityMetricsTest.java b/tests/net/java/com/android/server/connectivity/IpConnectivityMetricsTest.java
index ede5988..a395c48 100644
--- a/tests/net/java/com/android/server/connectivity/IpConnectivityMetricsTest.java
+++ b/tests/net/java/com/android/server/connectivity/IpConnectivityMetricsTest.java
@@ -423,11 +423,11 @@
                 "  wakeup_stats <",
                 "    application_wakeups: 2",
                 "    duration_sec: 0",
+                "    no_uid_wakeups: 0",
                 "    non_application_wakeups: 0",
                 "    root_wakeups: 0",
                 "    system_wakeups: 1",
                 "    total_wakeups: 3",
-                "    unrouted_wakeups: 0",
                 "  >",
                 ">",
                 "events <",
@@ -439,11 +439,11 @@
                 "  wakeup_stats <",
                 "    application_wakeups: 1",
                 "    duration_sec: 0",
+                "    no_uid_wakeups: 1",
                 "    non_application_wakeups: 0",
                 "    root_wakeups: 0",
                 "    system_wakeups: 2",
                 "    total_wakeups: 4",
-                "    unrouted_wakeups: 1",
                 "  >",
                 ">",
                 "version: 2\n");
diff --git a/tests/net/java/com/android/server/connectivity/NetdEventListenerServiceTest.java b/tests/net/java/com/android/server/connectivity/NetdEventListenerServiceTest.java
index 2b105e5..6723601 100644
--- a/tests/net/java/com/android/server/connectivity/NetdEventListenerServiceTest.java
+++ b/tests/net/java/com/android/server/connectivity/NetdEventListenerServiceTest.java
@@ -163,11 +163,11 @@
                 "  wakeup_stats <",
                 "    application_wakeups: 3",
                 "    duration_sec: 0",
+                "    no_uid_wakeups: 0",
                 "    non_application_wakeups: 0",
                 "    root_wakeups: 0",
                 "    system_wakeups: 2",
                 "    total_wakeups: 5",
-                "    unrouted_wakeups: 0",
                 "  >",
                 ">",
                 "events <",
@@ -179,11 +179,11 @@
                 "  wakeup_stats <",
                 "    application_wakeups: 2",
                 "    duration_sec: 0",
+                "    no_uid_wakeups: 2",
                 "    non_application_wakeups: 1",
                 "    root_wakeups: 2",
                 "    system_wakeups: 3",
                 "    total_wakeups: 10",
-                "    unrouted_wakeups: 2",
                 "  >",
                 ">",
                 "version: 2\n");
