diff options
author | Maciej Zenczykowski <maze@google.com> | 2019-07-02 18:47:48 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-07-02 18:47:48 +0000 |
commit | 2c74b2e5d8b4cae1bfa2eba897c66eb7462e2b7f (patch) | |
tree | 2dd94c1a40812ca967a890c5906c5d655c058271 | |
parent | bc058faaa3558579ff23a6dca1f9049cdee07247 (diff) | |
parent | 71dd51cefddccd1cc970b72a9510a164410b395a (diff) | |
download | base-2c74b2e5d8b4cae1bfa2eba897c66eb7462e2b7f.tar.gz |
Merge "Fix mobile data usage didn't get increased for xlat464 traffic" into qt-dev
-rw-r--r-- | services/core/java/com/android/server/net/NetworkStatsService.java | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java index f34ace55a72e..e0692f698bc6 100644 --- a/services/core/java/com/android/server/net/NetworkStatsService.java +++ b/services/core/java/com/android/server/net/NetworkStatsService.java @@ -1217,14 +1217,22 @@ public class NetworkStatsService extends INetworkStatsService.Stub { } } - // Traffic occurring on stacked interfaces is usually clatd, - // which is already accounted against its final egress interface - // by the kernel. Thus, we only need to collect stacked - // interface stats at the UID level. + // Traffic occurring on stacked interfaces is usually clatd. + // UID stats are always counted on the stacked interface and never + // on the base interface, because the packets on the base interface + // do not actually match application sockets until they are translated. + // + // Interface stats are more complicated. Packets subject to BPF offload + // never appear on the base interface and only appear on the stacked + // interface, so to ensure those packets increment interface stats, interface + // stats from stacked interfaces must be collected. final List<LinkProperties> stackedLinks = state.linkProperties.getStackedLinks(); for (LinkProperties stackedLink : stackedLinks) { final String stackedIface = stackedLink.getInterfaceName(); if (stackedIface != null) { + if (mUseBpfTrafficStats) { + findOrCreateNetworkIdentitySet(mActiveIfaces, stackedIface).add(ident); + } findOrCreateNetworkIdentitySet(mActiveUidIfaces, stackedIface).add(ident); if (isMobile) { mobileIfaces.add(stackedIface); |