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

Commit 40bc5f79 authored by Jack Yu's avatar Jack Yu Committed by android-build-merger
Browse files

Merge "Reduced the retry after disconnect delay"

am: 36a94115

Change-Id: Ia301242a08eae8f0acb1f4bca0d4917f2af4a8d5
parents 35964319 36a94115
Loading
Loading
Loading
Loading
+24 −35
Original line number Original line Diff line number Diff line
@@ -27,8 +27,6 @@ import android.util.Pair;


import com.android.internal.telephony.dataconnection.ApnSetting;
import com.android.internal.telephony.dataconnection.ApnSetting;


import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Random;
import java.util.Random;


@@ -111,6 +109,11 @@ public class RetryManager {
     */
     */
    private static final long DEFAULT_INTER_APN_DELAY_FOR_PROVISIONING = 3000;
    private static final long DEFAULT_INTER_APN_DELAY_FOR_PROVISIONING = 3000;


    /**
     * The default value (in milliseconds) for retrying APN after disconnect
     */
    private static final long DEFAULT_APN_RETRY_AFTER_DISCONNECT_DELAY = 10000;

    /**
    /**
     * The value indicating no retry is needed
     * The value indicating no retry is needed
     */
     */
@@ -140,6 +143,12 @@ public class RetryManager {
     */
     */
    private long mFailFastInterApnDelay;
    private long mFailFastInterApnDelay;


    /**
     * The delay (in milliseconds) for APN retrying after disconnect (e.g. Modem suddenly reports
     * data call lost)
     */
    private long mApnRetryAfterDisconnectDelay;

    /**
    /**
     * Modem suggested delay for retrying the current APN
     * Modem suggested delay for retrying the current APN
     */
     */
@@ -337,6 +346,9 @@ public class RetryManager {
            mFailFastInterApnDelay = b.getLong(
            mFailFastInterApnDelay = b.getLong(
                    CarrierConfigManager.KEY_CARRIER_DATA_CALL_APN_DELAY_FASTER_LONG,
                    CarrierConfigManager.KEY_CARRIER_DATA_CALL_APN_DELAY_FASTER_LONG,
                    DEFAULT_INTER_APN_DELAY_FOR_PROVISIONING);
                    DEFAULT_INTER_APN_DELAY_FOR_PROVISIONING);
            mApnRetryAfterDisconnectDelay = b.getLong(
                    CarrierConfigManager.KEY_CARRIER_DATA_CALL_APN_RETRY_AFTER_DISCONNECT_LONG,
                    DEFAULT_APN_RETRY_AFTER_DISCONNECT_DELAY);


            // Load all retry patterns for all different APNs.
            // Load all retry patterns for all different APNs.
            String[] allConfigStrings = b.getStringArray(
            String[] allConfigStrings = b.getStringArray(
@@ -645,44 +657,21 @@ public class RetryManager {
    }
    }


    /**
    /**
     * Get the delay between APN setting trying. This is the fixed delay used for APN setting trying
     * Get the delay in milliseconds for APN retry after disconnect
     * within the same round, comparing to the exponential delay used for different rounds.
     * @param failFastEnabled True if fail fast mode enabled, which a shorter delay will be used
     * @return The delay in milliseconds
     * @return The delay in milliseconds
     */
     */
    public long getInterApnDelay(boolean failFastEnabled) {
    public long getRetryAfterDisconnectDelay() {
        return (failFastEnabled) ? mFailFastInterApnDelay : mInterApnDelay;
        return mApnRetryAfterDisconnectDelay;
    }
    }


    public String toString() {
    public String toString() {
        return "mApnType=" + mApnType + " mRetryCount=" + mRetryCount +
        if (mConfig == null) return "";
                " mMaxRetryCount=" + mMaxRetryCount + " mCurrentApnIndex=" + mCurrentApnIndex +
        return "RetryManager: mApnType=" + mApnType + " mRetryCount=" + mRetryCount
                " mSameApnRtryCount=" + mSameApnRetryCount + " mModemSuggestedDelay=" +
                + " mMaxRetryCount=" + mMaxRetryCount + " mCurrentApnIndex=" + mCurrentApnIndex
                mModemSuggestedDelay + " mRetryForever=" + mRetryForever +
                + " mSameApnRtryCount=" + mSameApnRetryCount + " mModemSuggestedDelay="
                " mConfig={" + mConfig + "}";
                + mModemSuggestedDelay + " mRetryForever=" + mRetryForever + " mInterApnDelay="
    }
                + mInterApnDelay + " mApnRetryAfterDisconnectDelay=" + mApnRetryAfterDisconnectDelay

                + " mConfig={" + mConfig + "}";
    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        pw.println("  RetryManager");
        pw.println("***************************************");

        pw.println("    config = " + mConfig);
        pw.println("    mApnType = " + mApnType);
        pw.println("    mCurrentApnIndex = " + mCurrentApnIndex);
        pw.println("    mRetryCount = " + mRetryCount);
        pw.println("    mMaxRetryCount = " + mMaxRetryCount);
        pw.println("    mSameApnRetryCount = " + mSameApnRetryCount);
        pw.println("    mModemSuggestedDelay = " + mModemSuggestedDelay);

        if (mWaitingApns != null) {
            pw.println("    APN list: ");
            for (int i = 0; i < mWaitingApns.size(); i++) {
                pw.println("      [" + i + "]=" + mWaitingApns.get(i));
            }
        }

        pw.println("***************************************");
        pw.flush();
    }
    }


    private void log(String s) {
    private void log(String s) {
+3 −4
Original line number Original line Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.internal.telephony.dataconnection;
package com.android.internal.telephony.dataconnection;


import android.app.PendingIntent;
import android.app.PendingIntent;
import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.net.NetworkCapabilities;
import android.net.NetworkConfig;
import android.net.NetworkConfig;
@@ -536,8 +535,8 @@ public class ApnContext {
        return mConnectionGeneration.get();
        return mConnectionGeneration.get();
    }
    }


    public long getInterApnDelay(boolean failFastEnabled) {
    long getRetryAfterDisconnectDelay() {
        return mRetryManager.getInterApnDelay(failFastEnabled || isFastRetryReason());
        return mRetryManager.getRetryAfterDisconnectDelay();
    }
    }


    public static int apnIdForType(int networkType) {
    public static int apnIdForType(int networkType) {
@@ -726,7 +725,7 @@ public class ApnContext {
                l.dump(fd, pw, args);
                l.dump(fd, pw, args);
            }
            }
            pw.decreaseIndent();
            pw.decreaseIndent();
            pw.println("mRetryManager={" + mRetryManager.toString() + "}");
            pw.println(mRetryManager);
        }
        }
    }
    }
}
}
+1 −1
Original line number Original line Diff line number Diff line
@@ -3176,7 +3176,7 @@ public class DcTracker extends Handler {
            // we're not tying up the RIL command channel.
            // we're not tying up the RIL command channel.
            // This also helps in any external dependency to turn off the context.
            // This also helps in any external dependency to turn off the context.
            if (DBG) log("onDisconnectDone: attached, ready and retry after disconnect");
            if (DBG) log("onDisconnectDone: attached, ready and retry after disconnect");
            long delay = apnContext.getInterApnDelay(mFailFast);
            long delay = apnContext.getRetryAfterDisconnectDelay();
            if (delay > 0) {
            if (delay > 0) {
                // Data connection is in IDLE state, so when we reconnect later, we'll rebuild
                // Data connection is in IDLE state, so when we reconnect later, we'll rebuild
                // the waiting APN list, which will also reset/reconfigure the retry manager.
                // the waiting APN list, which will also reset/reconfigure the retry manager.