Loading services/core/java/com/android/server/connectivity/NetdEventListenerService.java +26 −12 Original line number Diff line number Diff line Loading @@ -31,7 +31,9 @@ import android.net.metrics.DnsEvent; import android.net.metrics.NetworkMetrics; import android.net.metrics.WakeupEvent; import android.net.metrics.WakeupStats; import android.os.BatteryStatsInternal; import android.os.RemoteException; import android.os.SystemClock; import android.text.format.DateUtils; import android.util.ArrayMap; import android.util.Log; Loading @@ -44,6 +46,7 @@ import com.android.internal.util.FrameworkStatsLog; import com.android.internal.util.RingBuffer; import com.android.internal.util.TokenBucket; import com.android.net.module.util.BaseNetdEventListener; import com.android.server.LocalServices; import com.android.server.connectivity.metrics.nano.IpConnectivityLogClass.IpConnectivityEvent; import java.io.PrintWriter; Loading Loading @@ -74,7 +77,7 @@ public class NetdEventListenerService extends BaseNetdEventListener { // TODO: dedup this String constant with the one used in // ConnectivityService#wakeupModifyInterface(). @VisibleForTesting static final String WAKEUP_EVENT_IFACE_PREFIX = "iface:"; static final String WAKEUP_EVENT_PREFIX_DELIM = ":"; // Array of aggregated DNS and connect events sent by netd, grouped by net id. @GuardedBy("this") Loading Loading @@ -278,17 +281,14 @@ public class NetdEventListenerService extends BaseNetdEventListener { @Override public synchronized void onWakeupEvent(String prefix, int uid, int ethertype, int ipNextHeader, byte[] dstHw, String srcIp, String dstIp, int srcPort, int dstPort, long timestampNs) { String iface = prefix.replaceFirst(WAKEUP_EVENT_IFACE_PREFIX, ""); final long timestampMs; if (timestampNs > 0) { timestampMs = timestampNs / NANOS_PER_MS; } else { timestampMs = System.currentTimeMillis(); final String[] prefixParts = prefix.split(WAKEUP_EVENT_PREFIX_DELIM); if (prefixParts.length != 2) { throw new IllegalArgumentException("Prefix " + prefix + " required in format <nethandle>:<interface>"); } WakeupEvent event = new WakeupEvent(); event.iface = iface; event.timestampMs = timestampMs; final WakeupEvent event = new WakeupEvent(); event.iface = prefixParts[1]; event.uid = uid; event.ethertype = ethertype; event.dstHwAddr = MacAddress.fromBytes(dstHw); Loading @@ -297,11 +297,25 @@ public class NetdEventListenerService extends BaseNetdEventListener { event.ipNextHeader = ipNextHeader; event.srcPort = srcPort; event.dstPort = dstPort; if (timestampNs > 0) { event.timestampMs = timestampNs / NANOS_PER_MS; } else { event.timestampMs = System.currentTimeMillis(); } addWakeupEvent(event); String dstMac = event.dstHwAddr.toString(); final BatteryStatsInternal bsi = LocalServices.getService(BatteryStatsInternal.class); if (bsi != null) { final long netHandle = Long.parseLong(prefixParts[0]); final long elapsedMs = SystemClock.elapsedRealtime() + event.timestampMs - System.currentTimeMillis(); bsi.noteCpuWakingNetworkPacket(Network.fromNetworkHandle(netHandle), elapsedMs, event.uid); } final String dstMac = event.dstHwAddr.toString(); FrameworkStatsLog.write(FrameworkStatsLog.PACKET_WAKEUP_OCCURRED, uid, iface, ethertype, dstMac, srcIp, dstIp, ipNextHeader, srcPort, dstPort); uid, event.iface, ethertype, dstMac, srcIp, dstIp, ipNextHeader, srcPort, dstPort); } @Override Loading Loading
services/core/java/com/android/server/connectivity/NetdEventListenerService.java +26 −12 Original line number Diff line number Diff line Loading @@ -31,7 +31,9 @@ import android.net.metrics.DnsEvent; import android.net.metrics.NetworkMetrics; import android.net.metrics.WakeupEvent; import android.net.metrics.WakeupStats; import android.os.BatteryStatsInternal; import android.os.RemoteException; import android.os.SystemClock; import android.text.format.DateUtils; import android.util.ArrayMap; import android.util.Log; Loading @@ -44,6 +46,7 @@ import com.android.internal.util.FrameworkStatsLog; import com.android.internal.util.RingBuffer; import com.android.internal.util.TokenBucket; import com.android.net.module.util.BaseNetdEventListener; import com.android.server.LocalServices; import com.android.server.connectivity.metrics.nano.IpConnectivityLogClass.IpConnectivityEvent; import java.io.PrintWriter; Loading Loading @@ -74,7 +77,7 @@ public class NetdEventListenerService extends BaseNetdEventListener { // TODO: dedup this String constant with the one used in // ConnectivityService#wakeupModifyInterface(). @VisibleForTesting static final String WAKEUP_EVENT_IFACE_PREFIX = "iface:"; static final String WAKEUP_EVENT_PREFIX_DELIM = ":"; // Array of aggregated DNS and connect events sent by netd, grouped by net id. @GuardedBy("this") Loading Loading @@ -278,17 +281,14 @@ public class NetdEventListenerService extends BaseNetdEventListener { @Override public synchronized void onWakeupEvent(String prefix, int uid, int ethertype, int ipNextHeader, byte[] dstHw, String srcIp, String dstIp, int srcPort, int dstPort, long timestampNs) { String iface = prefix.replaceFirst(WAKEUP_EVENT_IFACE_PREFIX, ""); final long timestampMs; if (timestampNs > 0) { timestampMs = timestampNs / NANOS_PER_MS; } else { timestampMs = System.currentTimeMillis(); final String[] prefixParts = prefix.split(WAKEUP_EVENT_PREFIX_DELIM); if (prefixParts.length != 2) { throw new IllegalArgumentException("Prefix " + prefix + " required in format <nethandle>:<interface>"); } WakeupEvent event = new WakeupEvent(); event.iface = iface; event.timestampMs = timestampMs; final WakeupEvent event = new WakeupEvent(); event.iface = prefixParts[1]; event.uid = uid; event.ethertype = ethertype; event.dstHwAddr = MacAddress.fromBytes(dstHw); Loading @@ -297,11 +297,25 @@ public class NetdEventListenerService extends BaseNetdEventListener { event.ipNextHeader = ipNextHeader; event.srcPort = srcPort; event.dstPort = dstPort; if (timestampNs > 0) { event.timestampMs = timestampNs / NANOS_PER_MS; } else { event.timestampMs = System.currentTimeMillis(); } addWakeupEvent(event); String dstMac = event.dstHwAddr.toString(); final BatteryStatsInternal bsi = LocalServices.getService(BatteryStatsInternal.class); if (bsi != null) { final long netHandle = Long.parseLong(prefixParts[0]); final long elapsedMs = SystemClock.elapsedRealtime() + event.timestampMs - System.currentTimeMillis(); bsi.noteCpuWakingNetworkPacket(Network.fromNetworkHandle(netHandle), elapsedMs, event.uid); } final String dstMac = event.dstHwAddr.toString(); FrameworkStatsLog.write(FrameworkStatsLog.PACKET_WAKEUP_OCCURRED, uid, iface, ethertype, dstMac, srcIp, dstIp, ipNextHeader, srcPort, dstPort); uid, event.iface, ethertype, dstMac, srcIp, dstIp, ipNextHeader, srcPort, dstPort); } @Override Loading