From 7564228e3f18bcb2b2666f0703712d6ebfe56e1f Mon Sep 17 00:00:00 2001 From: Suprabh Shukla Date: Tue, 25 Apr 2023 23:15:43 -0700 Subject: [PATCH] Enable wakeup marking for Cellular transport Starting with Android U, the config_networkWakeupPacketMark and config_networkWakeupPacketMask values will be used to mark packets that woke up the AP on the cellular transport also. Test: Manual, by inspecting the output of `iptables -L -t -n -v mangle` Bug: 276498460 Change-Id: I4c7d2801532604d436bfda96c4c52a791995a9ed --- .../src/com/android/server/ConnectivityService.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java index e969cd656f..a8e8c7d3fb 100755 --- a/service/src/com/android/server/ConnectivityService.java +++ b/service/src/com/android/server/ConnectivityService.java @@ -7912,10 +7912,20 @@ public class ConnectivityService extends IConnectivityManager.Stub return SdkLevel.isAtLeastU() ? (networkHandle + ":" + iface) : ("iface:" + iface); } + private static boolean isWakeupMarkingSupported(NetworkCapabilities capabilities) { + if (capabilities.hasTransport(TRANSPORT_WIFI)) { + return true; + } + if (SdkLevel.isAtLeastU() && capabilities.hasTransport(TRANSPORT_CELLULAR)) { + return true; + } + return false; + } + private void wakeupModifyInterface(String iface, NetworkAgentInfo nai, boolean add) { // Marks are only available on WiFi interfaces. Checking for // marks on unsupported interfaces is harmless. - if (!nai.networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) { + if (!isWakeupMarkingSupported(nai.networkCapabilities)) { return; }