From 8ef41bf34fa3a900a030f4591d457706c854dd31 Mon Sep 17 00:00:00 2001 From: Jayachandran C Date: Thu, 6 Dec 2018 11:12:07 -0800 Subject: Cellular data stall recovery based on networkStatus This CL introduces cellular data stall recovery based on network validation result. It still re-uses the existing recovery steps but the triggers are based on networkStatus from NetworkMonitor when the network is bad. Each recovery step is spaced by a configurable grace period (default 3 mins) to avoid back to back recovery. This feature is controlled by the following settings. If this feature is enabled then the legacy data stall detection based on TrafficStats will automatically be disabled. Settings.Global.DATA_STALL_RECOVERY_ON_BAD_NETWORK 1 => Enabled (default) 0 => Disabled Settings.Global.MIN_DURATION_BETWEEN_RECOVERY_STEPS_IN_MS 3 minutes is default value Bug: 113916551 Test: atest FrameworksTelephonyTests:com.android.internal.telephony.dataconnection.DcTrackerTest Change-Id: I738fc7ed08803de1114f7a3d79bf278449e94ea8 --- core/java/android/provider/Settings.java | 15 +++++++++++++++ .../src/android/provider/SettingsBackupTest.java | 2 ++ .../java/com/android/internal/telephony/DctConstants.java | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index e6f8a56c17f0..8301286dca47 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -10470,6 +10470,21 @@ public final class Settings { */ public static final String DATA_STALL_EVALUATION_TYPE = "data_stall_evaluation_type"; + /** + * Whether to try cellular data recovery when a bad network is reported. + * + * @hide + */ + public static final String DATA_STALL_RECOVERY_ON_BAD_NETWORK = + "data_stall_recovery_on_bad_network"; + + /** + * Minumim duration in millisecodns between cellular data recovery attempts + * + * @hide + */ + public static final String MIN_DURATION_BETWEEN_RECOVERY_STEPS_IN_MS = + "min_duration_between_recovery_steps"; /** * Whether network service discovery is enabled. * diff --git a/core/tests/coretests/src/android/provider/SettingsBackupTest.java b/core/tests/coretests/src/android/provider/SettingsBackupTest.java index 7f23edf27094..ddab25271071 100644 --- a/core/tests/coretests/src/android/provider/SettingsBackupTest.java +++ b/core/tests/coretests/src/android/provider/SettingsBackupTest.java @@ -189,6 +189,7 @@ public class SettingsBackupTest { Settings.Global.DATA_STALL_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD, Settings.Global.DATA_STALL_EVALUATION_TYPE, Settings.Global.DATA_STALL_MIN_EVALUATE_INTERVAL, + Settings.Global.DATA_STALL_RECOVERY_ON_BAD_NETWORK, Settings.Global.DATA_STALL_VALID_DNS_TIME_THRESHOLD, Settings.Global.DEBUG_APP, Settings.Global.DEBUG_VIEW_ATTRIBUTES, @@ -292,6 +293,7 @@ public class SettingsBackupTest { Settings.Global.MDC_INITIAL_MAX_RETRY, Settings.Global.MHL_INPUT_SWITCHING_ENABLED, Settings.Global.MHL_POWER_CHARGE_ENABLED, + Settings.Global.MIN_DURATION_BETWEEN_RECOVERY_STEPS_IN_MS, Settings.Global.MOBILE_DATA, // Candidate for backup? Settings.Global.MOBILE_DATA_ALWAYS_ON, Settings.Global.MODE_RINGER, diff --git a/telephony/java/com/android/internal/telephony/DctConstants.java b/telephony/java/com/android/internal/telephony/DctConstants.java index 17516bc24aca..6e8d038eda4f 100644 --- a/telephony/java/com/android/internal/telephony/DctConstants.java +++ b/telephony/java/com/android/internal/telephony/DctConstants.java @@ -87,7 +87,7 @@ public class DctConstants { public static final int CMD_NET_STAT_POLL = BASE + 40; public static final int EVENT_DATA_RAT_CHANGED = BASE + 41; public static final int CMD_CLEAR_PROVISIONING_SPINNER = BASE + 42; - public static final int EVENT_REDIRECTION_DETECTED = BASE + 44; + public static final int EVENT_NETWORK_STATUS_CHANGED = BASE + 44; public static final int EVENT_PCO_DATA_RECEIVED = BASE + 45; public static final int EVENT_DATA_ENABLED_CHANGED = BASE + 46; public static final int EVENT_DATA_RECONNECT = BASE + 47; -- cgit v1.2.3-59-g8ed1b