summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Shi <kaishi@google.com>2020-06-29 18:56:30 -0700
committerKai Shi <kaishi@google.com>2020-06-30 16:22:23 +0000
commit2b435c05d7d588b665d9ad0f1728b9d0bb02395b (patch)
treee79cf61a1a1cd6a4c1e11719910193f8c2f4fe5a
parent90723104f67badbfd95ca374fea2b514d3a314f3 (diff)
Bug fix of Tx PER when packet count is low
Use default Tx PER when packet count is low because PER estimation is unreliable with low Tx packet count. Bug: 159866355 Test: atest com.android.server.wifi Change-Id: Ide48ab41420c9c907fc50a32aef10b47360209d4
-rw-r--r--service/java/com/android/server/wifi/DeviceConfigFacade.java2
-rw-r--r--service/java/com/android/server/wifi/WifiDataStall.java8
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiDataStallTest.java4
3 files changed, 8 insertions, 6 deletions
diff --git a/service/java/com/android/server/wifi/DeviceConfigFacade.java b/service/java/com/android/server/wifi/DeviceConfigFacade.java
index 0e43a0891..0b707701f 100644
--- a/service/java/com/android/server/wifi/DeviceConfigFacade.java
+++ b/service/java/com/android/server/wifi/DeviceConfigFacade.java
@@ -66,7 +66,7 @@ public class DeviceConfigFacade {
// Denominator part of default threshold of L2 throughput over L3 throughput ratio
public static final int DEFAULT_TPUT_SUFFICIENT_RATIO_THR_DEN = 1;
// Default threshold of Tx packet per second
- public static final int DEFAULT_TX_PACKET_PER_SECOND_THR = 1;
+ public static final int DEFAULT_TX_PACKET_PER_SECOND_THR = 2;
// Default threshold of Rx packet per second
public static final int DEFAULT_RX_PACKET_PER_SECOND_THR = 1;
// Default high threshold values for various connection/disconnection cases
diff --git a/service/java/com/android/server/wifi/WifiDataStall.java b/service/java/com/android/server/wifi/WifiDataStall.java
index 7ae577900..ebc184773 100644
--- a/service/java/com/android/server/wifi/WifiDataStall.java
+++ b/service/java/com/android/server/wifi/WifiDataStall.java
@@ -296,7 +296,8 @@ public class WifiDataStall {
}
logd(" ccaLevel = " + ccaLevel);
- int txPer = updateTxPer(txSuccessDelta, txRetriesDelta, isSameBssidAndFreq);
+ int txPer = updateTxPer(txSuccessDelta, txRetriesDelta, isSameBssidAndFreq,
+ isTxTrafficHigh);
boolean isTxTputLow = false;
boolean isRxTputLow = false;
@@ -397,12 +398,13 @@ public class WifiDataStall {
return WifiIsUnusableEvent.TYPE_UNKNOWN;
}
- private int updateTxPer(long txSuccessDelta, long txRetriesDelta, boolean isSameBssidAndFreq) {
+ private int updateTxPer(long txSuccessDelta, long txRetriesDelta, boolean isSameBssidAndFreq,
+ boolean isTxTrafficHigh) {
if (!isSameBssidAndFreq) {
return DEFAULT_TX_PACKET_ERROR_RATE;
}
long txAttempts = txSuccessDelta + txRetriesDelta;
- if (txAttempts <= 0) {
+ if (txAttempts <= 0 || !isTxTrafficHigh) {
return DEFAULT_TX_PACKET_ERROR_RATE;
}
return (int) (txRetriesDelta * 100 / txAttempts);
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiDataStallTest.java b/tests/wifitests/src/com/android/server/wifi/WifiDataStallTest.java
index 61979f1e8..4ed08a3d1 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiDataStallTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiDataStallTest.java
@@ -342,7 +342,7 @@ public class WifiDataStallTest extends WifiBaseTest {
assertEquals(WifiIsUnusableEvent.TYPE_UNKNOWN, mWifiDataStall
.checkDataStallAndThroughputSufficiency(mOldLlStats, mNewLlStats, mWifiInfo));
assertEquals(true, mWifiDataStall.isThroughputSufficient());
- assertEquals(4804, mWifiDataStall.getTxThroughputKbps());
+ assertEquals(9128, mWifiDataStall.getTxThroughputKbps());
assertEquals(-1, mWifiDataStall.getRxThroughputKbps());
verify(mWifiMetrics, never()).logWifiIsUnusableEvent(anyInt());
}
@@ -400,7 +400,7 @@ public class WifiDataStallTest extends WifiBaseTest {
assertEquals(WifiIsUnusableEvent.TYPE_UNKNOWN, mWifiDataStall
.checkDataStallAndThroughputSufficiency(mOldLlStats, mNewLlStats, mWifiInfo));
assertEquals(true, mWifiDataStall.isThroughputSufficient());
- assertEquals(4707, mWifiDataStall.getTxThroughputKbps());
+ assertEquals(8943, mWifiDataStall.getTxThroughputKbps());
assertEquals(9414, mWifiDataStall.getRxThroughputKbps());
}