DO NOT MERGE: use legacy way to get tcp packet count

The current networkStats getIfaceStats implementation check if
bpf is enabled, and use bpf to get all traffic stats. However,
the bpf implementation did not contain tcp packet counts. So
data stall detection in DcTracker could not get the packet
count to trigger data stall. Hence the data stall never
triggers for device that enables bpf.

This solution is for short term solution that rollback the
design to use xt_qtaguid for bpf enabled device.

Bug: 110443385
Test: 1. fake data stall to trigger data stall recovery
      2. enable debug log to make sure tcp packet count is
         correct
      3. runtest frameworks-net
      4. run cts -m CtsUsageStatsTestCases

Change-Id: I1ce9e92fe194da2ea0a3eec014fd50bb50cdd44a
This commit is contained in:
junyulai
2018-06-25 21:51:14 +08:00
parent 0026f5eb18
commit 0b4a66a1c2

View File

@@ -941,8 +941,14 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
@Override @Override
public long getIfaceStats(String iface, int type) { public long getIfaceStats(String iface, int type) {
// eBPF code doesn't provide per-interface TCP counters. Use xt_qtaguid for now.
// TODO: delete getMobileTcp(Rx|Tx)Packets entirely. See b/110443385 .
if (type == TYPE_TCP_TX_PACKETS || type == TYPE_TCP_RX_PACKETS) {
return nativeGetIfaceStat(iface, type, false);
} else {
return nativeGetIfaceStat(iface, type, checkBpfStatsEnable()); return nativeGetIfaceStat(iface, type, checkBpfStatsEnable());
} }
}
@Override @Override
public long getTotalStats(int type) { public long getTotalStats(int type) {