From 2cb46550f76cf146852d74216c96d2d10760dee7 Mon Sep 17 00:00:00 2001 From: Chenbo Feng Date: Fri, 18 May 2018 17:10:07 -0700 Subject: [PATCH] Check for bpf support at NetworkStatsService start The current implementation check for bpf map existance whenever a NetworkStats request comes in. The check is not efficient and may require additional permission for threads. So a member variable is added to NetworkStatsService to store the bpf configuration status and is initialized when NetworkStatsService start. Test: -m CtsNetTestCases -t android.net.cts.TrafficStatsTest -m CtsUsageStatsTestCases -t android.app.usage.cts.NetworkUsageStatsTest Bug: 79994577 Change-Id: I872ae18fb3e9631a4e6c4d773fefbba32e60a03b Merged-In: I872ae18fb3e9631a4e6c4d773fefbba32e60a03b --- .../java/com/android/server/net/NetworkStatsService.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java index da40692a43..e5cf394e5a 100644 --- a/services/core/java/com/android/server/net/NetworkStatsService.java +++ b/services/core/java/com/android/server/net/NetworkStatsService.java @@ -179,6 +179,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub { private final PowerManager.WakeLock mWakeLock; + private final boolean mUseBpfTrafficStats; + private IConnectivityManager mConnManager; @VisibleForTesting @@ -328,6 +330,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { mStatsObservers = checkNotNull(statsObservers, "missing NetworkStatsObservers"); mSystemDir = checkNotNull(systemDir, "missing systemDir"); mBaseDir = checkNotNull(baseDir, "missing baseDir"); + mUseBpfTrafficStats = new File("/sys/fs/bpf/traffic_uid_stats_map").exists(); } @VisibleForTesting @@ -916,7 +919,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { } private boolean checkBpfStatsEnable() { - return new File("/sys/fs/bpf/traffic_uid_stats_map").exists(); + return mUseBpfTrafficStats; } /**