summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej Zenczykowski <maze@google.com>2019-07-02 18:47:48 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-07-02 18:47:48 +0000
commit2c74b2e5d8b4cae1bfa2eba897c66eb7462e2b7f (patch)
tree2dd94c1a40812ca967a890c5906c5d655c058271
parentbc058faaa3558579ff23a6dca1f9049cdee07247 (diff)
parent71dd51cefddccd1cc970b72a9510a164410b395a (diff)
downloadbase-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.java16
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);