Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8ef41bf3 authored by Jayachandran C's avatar Jayachandran C Committed by Jayachandran Chinnakkannu
Browse files

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
parent 56401a4c
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -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.
         *
+2 −0
Original line number Diff line number Diff line
@@ -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,
+1 −1
Original line number Diff line number Diff line
@@ -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;