Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 09c4d6d7 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Guard against missing mac addresses in onWakeupEvent" into udc-dev am:...

Merge "Guard against missing mac addresses in onWakeupEvent" into udc-dev am: 34f6424c am: 5dfbbf34 am: b091b4cd

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22880033



Change-Id: I4dcaf115ddb2a66a5f5909656bd8dceb96ef6965
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents a2e003b1 b091b4cd
Loading
Loading
Loading
Loading
+14 −12
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ public class WakeupStats {
                break;
        }

        if (ev.dstHwAddr != null) {
            switch (ev.dstHwAddr.getAddressType()) {
                case MacAddress.TYPE_UNICAST:
                    l2UnicastCount++;
@@ -93,6 +94,7 @@ public class WakeupStats {
                default:
                    break;
            }
        }

        increment(ethertypes, ev.ethertype);
        if (ev.ipNextHeader >= 0) {
+18 −5
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import android.util.SparseArray;

import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.BitUtils;
import com.android.internal.util.FrameworkStatsLog;
import com.android.internal.util.RingBuffer;
@@ -278,6 +279,11 @@ public class NetdEventListenerService extends BaseNetdEventListener {
        }
    }

    private boolean hasWifiTransport(Network network) {
        final NetworkCapabilities nc = mCm.getNetworkCapabilities(network);
        return nc.hasTransport(NetworkCapabilities.TRANSPORT_WIFI);
    }

    @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) {
@@ -286,12 +292,21 @@ public class NetdEventListenerService extends BaseNetdEventListener {
            throw new IllegalArgumentException("Prefix " + prefix
                    + " required in format <nethandle>:<interface>");
        }
        final long netHandle = Long.parseLong(prefixParts[0]);
        final Network network = Network.fromNetworkHandle(netHandle);

        final WakeupEvent event = new WakeupEvent();
        event.iface = prefixParts[1];
        event.uid = uid;
        event.ethertype = ethertype;
        if (ArrayUtils.isEmpty(dstHw)) {
            if (hasWifiTransport(network)) {
                Log.e(TAG, "Empty mac address on WiFi transport, network: " + network);
            }
            event.dstHwAddr = null;
        } else {
            event.dstHwAddr = MacAddress.fromBytes(dstHw);
        }
        event.srcIp = srcIp;
        event.dstIp = dstIp;
        event.ipNextHeader = ipNextHeader;
@@ -306,14 +321,12 @@ public class NetdEventListenerService extends BaseNetdEventListener {

        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);
            bsi.noteCpuWakingNetworkPacket(network, elapsedMs, event.uid);
        }

        final String dstMac = event.dstHwAddr.toString();
        final String dstMac = String.valueOf(event.dstHwAddr);
        FrameworkStatsLog.write(FrameworkStatsLog.PACKET_WAKEUP_OCCURRED,
                uid, event.iface, ethertype, dstMac, srcIp, dstIp, ipNextHeader, srcPort, dstPort);
    }