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

Commit 0a9ee127 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Enable bandwidth module from stats service.

During systemReady(), tell netd to enable bandwidth tracking module,
which is used to provide detailed stats and controls.

Change-Id: Iecfd8b17a3b90f5a817d731fbe1c71777681ed6e
parent 8969d992
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -226,4 +226,6 @@ interface INetworkManagementService
     */
    int getInterfaceTxThrottle(String iface);

    void setBandwidthControlEnabled(boolean enabled);

}
+2 −0
Original line number Diff line number Diff line
@@ -3803,6 +3803,8 @@ public final class Settings {
        public static final String DREAM_TIMEOUT =
                "dream_timeout";

        /** {@hide} */
        public static final String NETSTATS_ENABLED = "netstats_enabled";
        /** {@hide} */
        public static final String NETSTATS_POLL_INTERVAL = "netstats_poll_interval";
        /** {@hide} */
+7 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.server;
import static android.net.NetworkStats.IFACE_ALL;
import static android.net.NetworkStats.TAG_NONE;
import static android.net.NetworkStats.UID_ALL;
import static android.Manifest.permission.MANAGE_NETWORK_POLICY;

import android.content.Context;
import android.content.pm.PackageManager;
@@ -1022,6 +1023,12 @@ class NetworkManagementService extends INetworkManagementService.Stub {
        return getInterfaceThrottle(iface, false);
    }

    @Override
    public void setBandwidthControlEnabled(boolean enabled) {
        mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG);
        mConnector.doCommand(String.format("bandwidth %s", (enabled ? "enable" : "disable")));
    }

    /**
     * Utility method to read a single plain-text {@link Long} from the given
     * {@link File}, usually from a {@code /proc/} filesystem.
+17 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import static android.net.NetworkStats.IFACE_ALL;
import static android.net.NetworkStats.TAG_NONE;
import static android.net.NetworkStats.UID_ALL;
import static android.net.TrafficStats.UID_REMOVED;
import static android.provider.Settings.Secure.NETSTATS_ENABLED;
import static android.provider.Settings.Secure.NETSTATS_NETWORK_BUCKET_DURATION;
import static android.provider.Settings.Secure.NETSTATS_NETWORK_MAX_HISTORY;
import static android.provider.Settings.Secure.NETSTATS_PERSIST_THRESHOLD;
@@ -134,6 +135,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
     * Settings that can be changed externally.
     */
    public interface NetworkStatsSettings {
        public boolean getEnabled();
        public long getPollInterval();
        public long getPersistThreshold();
        public long getNetworkBucketDuration();
@@ -206,6 +208,18 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
    }

    public void systemReady() {
        if (mSettings.getEnabled()) {
            try {
                // enable low-level bandwidth stats and control
                // TODO: consider shipping with this enabled by default
                mNetworkManager.setBandwidthControlEnabled(true);
            } catch (RemoteException e) {
                Slog.e(TAG, "problem enabling bandwidth controls", e);
            }
        } else {
            Slog.w(TAG, "detailed network stats disabled");
        }

        synchronized (mStatsLock) {
            // read historical network stats from disk, since policy service
            // might need them right away. we delay loading detailed UID stats
@@ -1040,6 +1054,9 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
            return Settings.Secure.getLong(mResolver, name, def);
        }

        public boolean getEnabled() {
            return Settings.Secure.getInt(mResolver, NETSTATS_ENABLED, 1) != 0;
        }
        public long getPollInterval() {
            return getSecureLong(NETSTATS_POLL_INTERVAL, 15 * MINUTE_IN_MILLIS);
        }