Snap for 4770446 from 4bc53c67f4f97513db6fa5ead362132ed55a80bb to pi-release

Change-Id: I88dc00c8e5e27d0967ffa0c17f62f5cac0510ad8
diff --git a/tests/cts/net/src/android/net/cts/IpSecManagerTest.java b/tests/cts/net/src/android/net/cts/IpSecManagerTest.java
index 95d91a2..a18b2f0 100644
--- a/tests/cts/net/src/android/net/cts/IpSecManagerTest.java
+++ b/tests/cts/net/src/android/net/cts/IpSecManagerTest.java
@@ -353,7 +353,8 @@
         private static void assertUidStatsDelta(
                 int expectedTxByteDelta,
                 int expectedTxPacketDelta,
-                int expectedRxByteDelta,
+                int minRxByteDelta,
+                int maxRxByteDelta,
                 int expectedRxPacketDelta) {
             long newUidTxBytes = TrafficStats.getUidTxBytes(Os.getuid());
             long newUidRxBytes = TrafficStats.getUidRxBytes(Os.getuid());
@@ -361,7 +362,9 @@
             long newUidRxPackets = TrafficStats.getUidRxPackets(Os.getuid());
 
             assertEquals(expectedTxByteDelta, newUidTxBytes - uidTxBytes);
-            assertEquals(expectedRxByteDelta, newUidRxBytes - uidRxBytes);
+            assertTrue(
+                    newUidRxBytes - uidRxBytes >= minRxByteDelta
+                            && newUidRxBytes - uidRxBytes <= maxRxByteDelta);
             assertEquals(expectedTxPacketDelta, newUidTxPackets - uidTxPackets);
             assertEquals(expectedRxPacketDelta, newUidRxPackets - uidRxPackets);
         }
@@ -561,13 +564,13 @@
 
         StatsChecker.waitForNumPackets(expectedPackets);
 
-        if (udpEncapLen != 0) {
-            StatsChecker.assertUidStatsDelta(
-                    expectedOuterBytes, expectedPackets, expectedOuterBytes, expectedPackets);
-        } else {
-            StatsChecker.assertUidStatsDelta(
-                    expectedOuterBytes, expectedPackets, expectedInnerBytes, expectedPackets);
-        }
+        // eBPF only counts inner packets, whereas xt_qtaguid counts outer packets. Allow both
+        StatsChecker.assertUidStatsDelta(
+                expectedOuterBytes,
+                expectedPackets,
+                expectedInnerBytes,
+                expectedOuterBytes,
+                expectedPackets);
 
         // Unreliable at low numbers due to potential interference from other processes.
         if (sendCount >= 1000) {
@@ -607,7 +610,11 @@
 
             StatsChecker.waitForNumPackets(expectedNumPkts);
             StatsChecker.assertUidStatsDelta(
-                    expectedPacketSize, expectedNumPkts, expectedPacketSize, expectedNumPkts);
+                    expectedPacketSize,
+                    expectedNumPkts,
+                    expectedPacketSize,
+                    expectedPacketSize,
+                    expectedNumPkts);
             StatsChecker.assertIfaceStatsDelta(
                     expectedPacketSize, expectedNumPkts, expectedPacketSize, expectedNumPkts);
         }