summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMingguang Xu <mingguangxu@google.com>2019-09-19 00:29:40 -0700
committerMingguang Xu <mingguangxu@google.com>2019-09-19 07:41:08 +0000
commitec1e58cd439ae645ff4e5bf55f7961e359bf0e4c (patch)
treebb8e4395080f3ccc257bf62aaec1e4881dc6cf9c
parentc9d68061749a93378f575199798f676a2b5c37a8 (diff)
downloadandroid_frameworks_opt_net_wifi-ec1e58cd439ae645ff4e5bf55f7961e359bf0e4c.tar.gz
android_frameworks_opt_net_wifi-ec1e58cd439ae645ff4e5bf55f7961e359bf0e4c.tar.bz2
android_frameworks_opt_net_wifi-ec1e58cd439ae645ff4e5bf55f7961e359bf0e4c.zip
Wifi usability: Change the unit of the threshold for tx/rx throughput from Mbps to Kbps
Data stall event can be triggered if the tx/rx tput is consecutively below a threshold over multiple RSSI polls.   Changing the unit of the threshold from Mbps to Kbps allows us to configure a value below 1Mbps, e.g., 400Kbps. Bug: 141027476 Test: frameworks/opt/net/wifi/tests/wifitests/runtests.sh Change-Id: If0ca391b248c4248da8d2fee37c82d74fdb25ed2 Signed-off-by: Mingguang Xu <mingguangxu@google.com> Merged-In: I76d6338cd2d482d198fde1e5a2d1a0540c087ca6
-rw-r--r--service/java/com/android/server/wifi/DeviceConfigFacade.java20
-rw-r--r--service/java/com/android/server/wifi/WifiDataStall.java20
-rw-r--r--service/java/com/android/server/wifi/WifiMetrics.java16
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiDataStallTest.java8
4 files changed, 32 insertions, 32 deletions
diff --git a/service/java/com/android/server/wifi/DeviceConfigFacade.java b/service/java/com/android/server/wifi/DeviceConfigFacade.java
index a9889f424..947261b8a 100644
--- a/service/java/com/android/server/wifi/DeviceConfigFacade.java
+++ b/service/java/com/android/server/wifi/DeviceConfigFacade.java
@@ -31,10 +31,10 @@ public class DeviceConfigFacade {
// Default duration for evaluating Wifi condition to trigger a data stall
// measured in milliseconds
public static final int DEFAULT_DATA_STALL_DURATION_MS = 1500;
- // Default threshold of Tx throughput below which to trigger a data stall measured in Mbps
- public static final int DEFAULT_DATA_STALL_TX_TPUT_THR_MBPS = 2;
- // Default threshold of Rx throughput below which to trigger a data stall measured in Mbps
- public static final int DEFAULT_DATA_STALL_RX_TPUT_THR_MBPS = 2;
+ // Default threshold of Tx throughput below which to trigger a data stall measured in Kbps
+ public static final int DEFAULT_DATA_STALL_TX_TPUT_THR_KBPS = 2000;
+ // Default threshold of Rx throughput below which to trigger a data stall measured in Kbps
+ public static final int DEFAULT_DATA_STALL_RX_TPUT_THR_KBPS = 2000;
// Default threshold of Tx packet error rate above which to trigger a data stall in percentage
public static final int DEFAULT_DATA_STALL_TX_PER_THR = 90;
// Default threshold of CCA level above which to trigger a data stall in percentage
@@ -77,17 +77,17 @@ public class DeviceConfigFacade {
/**
* Gets the threshold of Tx throughput below which to trigger a data stall.
*/
- public int getDataStallTxTputThrMbps() {
- return DeviceConfig.getInt(NAMESPACE, "data_stall_tx_tput_thr_mbps",
- DEFAULT_DATA_STALL_TX_TPUT_THR_MBPS);
+ public int getDataStallTxTputThrKbps() {
+ return DeviceConfig.getInt(NAMESPACE, "data_stall_tx_tput_thr_kbps",
+ DEFAULT_DATA_STALL_TX_TPUT_THR_KBPS);
}
/**
* Gets the threshold of Rx throughput below which to trigger a data stall.
*/
- public int getDataStallRxTputThrMbps() {
- return DeviceConfig.getInt(NAMESPACE, "data_stall_rx_tput_thr_mbps",
- DEFAULT_DATA_STALL_RX_TPUT_THR_MBPS);
+ public int getDataStallRxTputThrKbps() {
+ return DeviceConfig.getInt(NAMESPACE, "data_stall_rx_tput_thr_kbps",
+ DEFAULT_DATA_STALL_RX_TPUT_THR_KBPS);
}
/**
diff --git a/service/java/com/android/server/wifi/WifiDataStall.java b/service/java/com/android/server/wifi/WifiDataStall.java
index 6eb3b41e5..a7931febe 100644
--- a/service/java/com/android/server/wifi/WifiDataStall.java
+++ b/service/java/com/android/server/wifi/WifiDataStall.java
@@ -52,8 +52,8 @@ public class WifiDataStall {
private int mMinTxBad;
private int mMinTxSuccessWithoutRx;
private int mDataStallDurationMs;
- private int mDataStallTxTputThrMbps;
- private int mDataStallRxTputThrMbps;
+ private int mDataStallTxTputThrKbps;
+ private int mDataStallRxTputThrKbps;
private int mDataStallTxPerThr;
private int mDataStallCcaLevelThr;
private int mLastFrequency = -1;
@@ -156,12 +156,12 @@ public class WifiDataStall {
boolean isTxTputLow = false;
boolean isRxTputLow = false;
if (txLinkSpeed > 0) {
- int txTput = txLinkSpeed * (100 - txPer) * (100 - ccaLevel);
- isTxTputLow = txTput < mDataStallTxTputThrMbps * 100 * 100;
+ int txTputKbps = txLinkSpeed * 1000 * (100 - txPer) * (100 - ccaLevel);
+ isTxTputLow = txTputKbps < mDataStallTxTputThrKbps * 100 * 100;
}
if (rxLinkSpeed > 0) {
- int rxTput = rxLinkSpeed * (100 - ccaLevel);
- isRxTputLow = rxTput < mDataStallRxTputThrMbps * 100;
+ int rxTputKbps = rxLinkSpeed * 1000 * (100 - ccaLevel);
+ isRxTputLow = rxTputKbps < mDataStallRxTputThrKbps * 100;
}
boolean dataStallTx = isTxTputLow || ccaLevel >= mDataStallCcaLevelThr
@@ -255,14 +255,14 @@ public class WifiDataStall {
private void updateUsabilityDataCollectionFlags() {
mDataStallDurationMs = mDeviceConfigFacade.getDataStallDurationMs();
- mDataStallTxTputThrMbps = mDeviceConfigFacade.getDataStallTxTputThrMbps();
- mDataStallRxTputThrMbps = mDeviceConfigFacade.getDataStallRxTputThrMbps();
+ mDataStallTxTputThrKbps = mDeviceConfigFacade.getDataStallTxTputThrKbps();
+ mDataStallRxTputThrKbps = mDeviceConfigFacade.getDataStallRxTputThrKbps();
mDataStallTxPerThr = mDeviceConfigFacade.getDataStallTxPerThr();
mDataStallCcaLevelThr = mDeviceConfigFacade.getDataStallCcaLevelThr();
mWifiMetrics.setDataStallDurationMs(mDataStallDurationMs);
- mWifiMetrics.setDataStallTxTputThrMbps(mDataStallTxTputThrMbps);
- mWifiMetrics.setDataStallRxTputThrMbps(mDataStallRxTputThrMbps);
+ mWifiMetrics.setDataStallTxTputThrKbps(mDataStallTxTputThrKbps);
+ mWifiMetrics.setDataStallRxTputThrKbps(mDataStallRxTputThrKbps);
mWifiMetrics.setDataStallTxPerThr(mDataStallTxPerThr);
mWifiMetrics.setDataStallCcaLevelThr(mDataStallCcaLevelThr);
}
diff --git a/service/java/com/android/server/wifi/WifiMetrics.java b/service/java/com/android/server/wifi/WifiMetrics.java
index 1b7e8cdb3..54a0be66d 100644
--- a/service/java/com/android/server/wifi/WifiMetrics.java
+++ b/service/java/com/android/server/wifi/WifiMetrics.java
@@ -2784,10 +2784,10 @@ public class WifiMetrics {
+ mExperimentValues.linkSpeedCountsLoggingEnabled);
pw.println("mExperimentValues.dataStallDurationMs="
+ mExperimentValues.dataStallDurationMs);
- pw.println("mExperimentValues.dataStallTxTputThrMbps="
- + mExperimentValues.dataStallTxTputThrMbps);
- pw.println("mExperimentValues.dataStallRxTputThrMbps="
- + mExperimentValues.dataStallRxTputThrMbps);
+ pw.println("mExperimentValues.dataStallTxTputThrKbps="
+ + mExperimentValues.dataStallTxTputThrKbps);
+ pw.println("mExperimentValues.dataStallRxTputThrKbps="
+ + mExperimentValues.dataStallRxTputThrKbps);
pw.println("mExperimentValues.dataStallTxPerThr="
+ mExperimentValues.dataStallTxPerThr);
pw.println("mExperimentValues.dataStallCcaLevelThr="
@@ -5214,18 +5214,18 @@ public class WifiMetrics {
/**
* Sets the threshold of Tx throughput below which to trigger a data stall
*/
- public void setDataStallTxTputThrMbps(int txTputThr) {
+ public void setDataStallTxTputThrKbps(int txTputThr) {
synchronized (mLock) {
- mExperimentValues.dataStallTxTputThrMbps = txTputThr;
+ mExperimentValues.dataStallTxTputThrKbps = txTputThr;
}
}
/**
* Sets the threshold of Rx throughput below which to trigger a data stall
*/
- public void setDataStallRxTputThrMbps(int rxTputThr) {
+ public void setDataStallRxTputThrKbps(int rxTputThr) {
synchronized (mLock) {
- mExperimentValues.dataStallRxTputThrMbps = rxTputThr;
+ mExperimentValues.dataStallRxTputThrKbps = rxTputThr;
}
}
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiDataStallTest.java b/tests/wifitests/src/com/android/server/wifi/WifiDataStallTest.java
index 71b658923..6ac18361c 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiDataStallTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiDataStallTest.java
@@ -76,10 +76,10 @@ public class WifiDataStallTest {
.thenReturn(WifiDataStall.MIN_TX_SUCCESS_WITHOUT_RX_DEFAULT);
when(mDeviceConfigFacade.getDataStallDurationMs()).thenReturn(
DeviceConfigFacade.DEFAULT_DATA_STALL_DURATION_MS);
- when(mDeviceConfigFacade.getDataStallTxTputThrMbps()).thenReturn(
- DeviceConfigFacade.DEFAULT_DATA_STALL_TX_TPUT_THR_MBPS);
- when(mDeviceConfigFacade.getDataStallRxTputThrMbps()).thenReturn(
- DeviceConfigFacade.DEFAULT_DATA_STALL_RX_TPUT_THR_MBPS);
+ when(mDeviceConfigFacade.getDataStallTxTputThrKbps()).thenReturn(
+ DeviceConfigFacade.DEFAULT_DATA_STALL_TX_TPUT_THR_KBPS);
+ when(mDeviceConfigFacade.getDataStallRxTputThrKbps()).thenReturn(
+ DeviceConfigFacade.DEFAULT_DATA_STALL_RX_TPUT_THR_KBPS);
when(mDeviceConfigFacade.getDataStallTxPerThr()).thenReturn(
DeviceConfigFacade.DEFAULT_DATA_STALL_TX_PER_THR);
when(mDeviceConfigFacade.getDataStallCcaLevelThr()).thenReturn(