Loading src/java/com/android/internal/telephony/dataconnection/DataConnection.java +33 −5 Original line number Diff line number Diff line Loading @@ -1213,13 +1213,29 @@ public final class DataConnection extends StateMachine { if (DBG) { log("DcActivatingState: ERR_RilError " + " delay=" + delay + " isRetryNeeded=" + mRetryManager.isRetryNeeded()); } if ((delay >= 0) && (result.mFailCause.isPermanentFail() == false)) { + " isRetryNeeded=" + mRetryManager.isRetryNeeded() + " result=" + result + " result.isRestartRadioFail=" + result.mFailCause.isRestartRadioFail() + " result.isPermanentFail=" + result.mFailCause.isPermanentFail()); } if (result.mFailCause.isRestartRadioFail()) { if (DBG) log("DcActivatingState: ERR_RilError restart radio"); mDct.sendRestartRadio(); mInactiveState.setEnterNotificationParams(cp, result.mFailCause); transitionTo(mInactiveState); } else if (result.mFailCause.isPermanentFail()) { if (DBG) log("DcActivatingState: ERR_RilError perm error"); mInactiveState.setEnterNotificationParams(cp, result.mFailCause); transitionTo(mInactiveState); } else if (delay >= 0) { if (DBG) log("DcActivatingState: ERR_RilError retry"); mDcRetryAlarmController.startRetryAlarm(EVENT_RETRY_CONNECTION, mTag, delay); transitionTo(mRetryingState); } else { if (DBG) log("DcActivatingState: ERR_RilError no retry"); mInactiveState.setEnterNotificationParams(cp, result.mFailCause); transitionTo(mInactiveState); } Loading Loading @@ -1259,13 +1275,25 @@ public final class DataConnection extends StateMachine { + " isRetryNeeded=" + mRetryManager.isRetryNeeded() + " dc=" + DataConnection.this); } if (mRetryManager.isRetryNeeded() && (cause.isPermanentFail() == false)) { if (cause.isRestartRadioFail()) { if (DBG) { log("DcActivatingState: EVENT_GET_LAST_FAIL_DONE" + " restart radio"); } mDct.sendRestartRadio(); mInactiveState.setEnterNotificationParams(cp, cause); transitionTo(mInactiveState); } else if (cause.isPermanentFail()) { if (DBG) log("DcActivatingState: EVENT_GET_LAST_FAIL_DONE perm er"); mInactiveState.setEnterNotificationParams(cp, cause); transitionTo(mInactiveState); } else if ((retryDelay >= 0) && (mRetryManager.isRetryNeeded())) { if (DBG) log("DcActivatingState: EVENT_GET_LAST_FAIL_DONE retry"); mDcRetryAlarmController.startRetryAlarm(EVENT_RETRY_CONNECTION, mTag, retryDelay); transitionTo(mRetryingState); } else { // Transition to inactive but send notifications after // we've entered the mInactive state. if (DBG) log("DcActivatingState: EVENT_GET_LAST_FAIL_DONE no retry"); mInactiveState.setEnterNotificationParams(cp, cause); transitionTo(mInactiveState); } Loading src/java/com/android/internal/telephony/dataconnection/DcController.java +12 −2 Original line number Diff line number Diff line Loading @@ -224,8 +224,18 @@ class DcController extends StateMachine { if (DBG) log("onDataStateChanged: Found ConnId=" + newState.cid + " newState=" + newState.toString()); if (newState.active == DATA_CONNECTION_ACTIVE_PH_LINK_INACTIVE) { DcFailCause failCause = DcFailCause.fromInt(newState.status); if (DBG) log("onDataStateChanged: inactive failCause=" + failCause); if (failCause.isRestartRadioFail()) { if (DBG) log("onDataStateChanged: X restart radio"); mDct.sendRestartRadio(); } else if (failCause.isPermanentFail()) { if (DBG) log("onDataStateChanged: inactive, add to cleanup list"); apnsToCleanup.addAll(dc.mApnContexts); } else { if (DBG) log("onDataStateChanged: inactive, add to retry list"); dcsToRetry.add(dc); } } else { // Its active so update the DataConnections link properties UpdateLinkPropertyResult result = dc.updateLinkProperty(newState); Loading src/java/com/android/internal/telephony/dataconnection/DcFailCause.java +6 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ public enum DcFailCause { SERVICE_OPTION_NOT_SUBSCRIBED(0x21), /* no retry */ SERVICE_OPTION_OUT_OF_ORDER(0x22), NSAPI_IN_USE(0x23), /* no retry */ REGULAR_DEACTIVATION(0x24), /* Restart radio */ ONLY_IPV4_ALLOWED(0x32), /* no retry */ ONLY_IPV6_ALLOWED(0x33), /* no retry */ ONLY_SINGLE_BEARER_ALLOWED(0x34), Loading Loading @@ -78,6 +79,11 @@ public enum DcFailCause { return mErrorCode; } /** Radio has failed such that the radio should be restarted */ public boolean isRestartRadioFail() { return (this == REGULAR_DEACTIVATION); } public boolean isPermanentFail() { return (this == OPERATOR_BARRED) || (this == MISSING_UNKNOWN_APN) || (this == UNKNOWN_PDP_ADDRESS_TYPE) || (this == USER_AUTHENTICATION) || Loading src/java/com/android/internal/telephony/dataconnection/DcTrackerBase.java +10 −0 Original line number Diff line number Diff line Loading @@ -779,6 +779,10 @@ public abstract class DcTrackerBase extends Handler { onUpdateIcc(); break; } case DctConstants.EVENT_RESTART_RADIO: { restartRadio(); break; } default: Rlog.e("DATA", "Unidentified event msg=" + msg); break; Loading Loading @@ -1505,6 +1509,12 @@ public abstract class DcTrackerBase extends Handler { sendMessage(msg); } void sendRestartRadio() { if (DBG)log("sendRestartRadio:"); Message msg = obtainMessage(DctConstants.EVENT_RESTART_RADIO); sendMessage(msg); } public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("DataConnectionTrackerBase:"); pw.println(" RADIO_TESTS=" + RADIO_TESTS); Loading Loading
src/java/com/android/internal/telephony/dataconnection/DataConnection.java +33 −5 Original line number Diff line number Diff line Loading @@ -1213,13 +1213,29 @@ public final class DataConnection extends StateMachine { if (DBG) { log("DcActivatingState: ERR_RilError " + " delay=" + delay + " isRetryNeeded=" + mRetryManager.isRetryNeeded()); } if ((delay >= 0) && (result.mFailCause.isPermanentFail() == false)) { + " isRetryNeeded=" + mRetryManager.isRetryNeeded() + " result=" + result + " result.isRestartRadioFail=" + result.mFailCause.isRestartRadioFail() + " result.isPermanentFail=" + result.mFailCause.isPermanentFail()); } if (result.mFailCause.isRestartRadioFail()) { if (DBG) log("DcActivatingState: ERR_RilError restart radio"); mDct.sendRestartRadio(); mInactiveState.setEnterNotificationParams(cp, result.mFailCause); transitionTo(mInactiveState); } else if (result.mFailCause.isPermanentFail()) { if (DBG) log("DcActivatingState: ERR_RilError perm error"); mInactiveState.setEnterNotificationParams(cp, result.mFailCause); transitionTo(mInactiveState); } else if (delay >= 0) { if (DBG) log("DcActivatingState: ERR_RilError retry"); mDcRetryAlarmController.startRetryAlarm(EVENT_RETRY_CONNECTION, mTag, delay); transitionTo(mRetryingState); } else { if (DBG) log("DcActivatingState: ERR_RilError no retry"); mInactiveState.setEnterNotificationParams(cp, result.mFailCause); transitionTo(mInactiveState); } Loading Loading @@ -1259,13 +1275,25 @@ public final class DataConnection extends StateMachine { + " isRetryNeeded=" + mRetryManager.isRetryNeeded() + " dc=" + DataConnection.this); } if (mRetryManager.isRetryNeeded() && (cause.isPermanentFail() == false)) { if (cause.isRestartRadioFail()) { if (DBG) { log("DcActivatingState: EVENT_GET_LAST_FAIL_DONE" + " restart radio"); } mDct.sendRestartRadio(); mInactiveState.setEnterNotificationParams(cp, cause); transitionTo(mInactiveState); } else if (cause.isPermanentFail()) { if (DBG) log("DcActivatingState: EVENT_GET_LAST_FAIL_DONE perm er"); mInactiveState.setEnterNotificationParams(cp, cause); transitionTo(mInactiveState); } else if ((retryDelay >= 0) && (mRetryManager.isRetryNeeded())) { if (DBG) log("DcActivatingState: EVENT_GET_LAST_FAIL_DONE retry"); mDcRetryAlarmController.startRetryAlarm(EVENT_RETRY_CONNECTION, mTag, retryDelay); transitionTo(mRetryingState); } else { // Transition to inactive but send notifications after // we've entered the mInactive state. if (DBG) log("DcActivatingState: EVENT_GET_LAST_FAIL_DONE no retry"); mInactiveState.setEnterNotificationParams(cp, cause); transitionTo(mInactiveState); } Loading
src/java/com/android/internal/telephony/dataconnection/DcController.java +12 −2 Original line number Diff line number Diff line Loading @@ -224,8 +224,18 @@ class DcController extends StateMachine { if (DBG) log("onDataStateChanged: Found ConnId=" + newState.cid + " newState=" + newState.toString()); if (newState.active == DATA_CONNECTION_ACTIVE_PH_LINK_INACTIVE) { DcFailCause failCause = DcFailCause.fromInt(newState.status); if (DBG) log("onDataStateChanged: inactive failCause=" + failCause); if (failCause.isRestartRadioFail()) { if (DBG) log("onDataStateChanged: X restart radio"); mDct.sendRestartRadio(); } else if (failCause.isPermanentFail()) { if (DBG) log("onDataStateChanged: inactive, add to cleanup list"); apnsToCleanup.addAll(dc.mApnContexts); } else { if (DBG) log("onDataStateChanged: inactive, add to retry list"); dcsToRetry.add(dc); } } else { // Its active so update the DataConnections link properties UpdateLinkPropertyResult result = dc.updateLinkProperty(newState); Loading
src/java/com/android/internal/telephony/dataconnection/DcFailCause.java +6 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ public enum DcFailCause { SERVICE_OPTION_NOT_SUBSCRIBED(0x21), /* no retry */ SERVICE_OPTION_OUT_OF_ORDER(0x22), NSAPI_IN_USE(0x23), /* no retry */ REGULAR_DEACTIVATION(0x24), /* Restart radio */ ONLY_IPV4_ALLOWED(0x32), /* no retry */ ONLY_IPV6_ALLOWED(0x33), /* no retry */ ONLY_SINGLE_BEARER_ALLOWED(0x34), Loading Loading @@ -78,6 +79,11 @@ public enum DcFailCause { return mErrorCode; } /** Radio has failed such that the radio should be restarted */ public boolean isRestartRadioFail() { return (this == REGULAR_DEACTIVATION); } public boolean isPermanentFail() { return (this == OPERATOR_BARRED) || (this == MISSING_UNKNOWN_APN) || (this == UNKNOWN_PDP_ADDRESS_TYPE) || (this == USER_AUTHENTICATION) || Loading
src/java/com/android/internal/telephony/dataconnection/DcTrackerBase.java +10 −0 Original line number Diff line number Diff line Loading @@ -779,6 +779,10 @@ public abstract class DcTrackerBase extends Handler { onUpdateIcc(); break; } case DctConstants.EVENT_RESTART_RADIO: { restartRadio(); break; } default: Rlog.e("DATA", "Unidentified event msg=" + msg); break; Loading Loading @@ -1505,6 +1509,12 @@ public abstract class DcTrackerBase extends Handler { sendMessage(msg); } void sendRestartRadio() { if (DBG)log("sendRestartRadio:"); Message msg = obtainMessage(DctConstants.EVENT_RESTART_RADIO); sendMessage(msg); } public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("DataConnectionTrackerBase:"); pw.println(" RADIO_TESTS=" + RADIO_TESTS); Loading