diff options
author | Pengquan Meng <mpq@google.com> | 2019-06-12 14:05:53 -0700 |
---|---|---|
committer | Pengquan Meng <mpq@google.com> | 2019-06-12 16:16:32 -0700 |
commit | cbc644587307c3af516de196defc06ebc408764b (patch) | |
tree | 44bccde6004731aa3500d560eea177bbfb11a50a | |
parent | 439fdc37cd08138b7bce71b9ea2d9249a9449a11 (diff) | |
download | telephony-cbc644587307c3af516de196defc06ebc408764b.tar.gz |
Fixed consistent issue for subId in dataConnection
Currently we get the NetworkCapabilities' specifier from
Phone.getSubId(). This could be different than the one we set when
created the data connection. We should only set the subId when bring up
the data connection.
Bug: 116476933
Test: build
Change-Id: Ie25ee7a7e7227de3c57a297cd0e8367c85bcccba
-rw-r--r-- | src/java/com/android/internal/telephony/dataconnection/DataConnection.java | 22 | ||||
-rw-r--r-- | src/java/com/android/internal/telephony/dataconnection/DcTracker.java | 3 |
2 files changed, 20 insertions, 5 deletions
diff --git a/src/java/com/android/internal/telephony/dataconnection/DataConnection.java b/src/java/com/android/internal/telephony/dataconnection/DataConnection.java index b24f367d24..9d4e39aac2 100644 --- a/src/java/com/android/internal/telephony/dataconnection/DataConnection.java +++ b/src/java/com/android/internal/telephony/dataconnection/DataConnection.java @@ -47,6 +47,7 @@ import android.telephony.DataFailCause; import android.telephony.NetworkRegistrationInfo; import android.telephony.Rlog; import android.telephony.ServiceState; +import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.data.ApnSetting; import android.telephony.data.DataCallResponse; @@ -154,6 +155,9 @@ public class DataConnection extends StateMachine { // The score we report to connectivity service private int mScore; + // The subscription id associated with this data connection. + private int mSubId; + // The data connection controller private DcController mDcController; @@ -182,16 +186,18 @@ public class DataConnection extends StateMachine { final int mConnectionGeneration; @RequestNetworkType final int mRequestType; + final int mSubId; ConnectionParams(ApnContext apnContext, int profileId, int rilRadioTechnology, Message onCompletedMsg, int connectionGeneration, - @RequestNetworkType int requestType) { + @RequestNetworkType int requestType, int subId) { mApnContext = apnContext; mProfileId = profileId; mRilRat = rilRadioTechnology; mOnCompletedMsg = onCompletedMsg; mConnectionGeneration = connectionGeneration; mRequestType = requestType; + mSubId = subId; } @Override @@ -201,6 +207,7 @@ public class DataConnection extends StateMachine { + " mRat=" + mRilRat + " mOnCompletedMsg=" + msgToString(mOnCompletedMsg) + " mRequestType=" + DcTracker.requestTypeToString(mRequestType) + + " mSubId=" + mSubId + "}"; } } @@ -872,6 +879,7 @@ public class DataConnection extends StateMachine { mRestrictedNetworkOverride = false; mDcFailCause = DataFailCause.NONE; mDisabledApnTypeBitMask = 0; + mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; } /** @@ -1253,7 +1261,7 @@ public class DataConnection extends StateMachine { result.setLinkUpstreamBandwidthKbps(up); result.setLinkDownstreamBandwidthKbps(down); - result.setNetworkSpecifier(new StringNetworkSpecifier(Integer.toString(mPhone.getSubId()))); + result.setNetworkSpecifier(new StringNetworkSpecifier(Integer.toString(mSubId))); result.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, !mPhone.getServiceState().getDataRoaming()); @@ -1723,6 +1731,10 @@ public class DataConnection extends StateMachine { return HANDLED; } + if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + mSubId = cp.mSubId; + } + transitionTo(mActivatingState); return HANDLED; case EVENT_DISCONNECT: @@ -2412,16 +2424,17 @@ public class DataConnection extends StateMachine { * @param connectionGeneration used to track a single connection request so disconnects can get * ignored if obsolete. * @param requestType Data request type + * @param subId the subscription id associated with this data connection. */ public void bringUp(ApnContext apnContext, int profileId, int rilRadioTechnology, Message onCompletedMsg, int connectionGeneration, - @RequestNetworkType int requestType) { + @RequestNetworkType int requestType, int subId) { if (DBG) { log("bringUp: apnContext=" + apnContext + " onCompletedMsg=" + onCompletedMsg); } sendMessage(DataConnection.EVENT_CONNECT, new ConnectionParams(apnContext, profileId, rilRadioTechnology, onCompletedMsg, - connectionGeneration, requestType)); + connectionGeneration, requestType, subId)); } /** @@ -2769,6 +2782,7 @@ public class DataConnection extends StateMachine { pw.println("mDisconnectParams=" + mDisconnectParams); pw.println("mDcFailCause=" + mDcFailCause); pw.println("mPhone=" + mPhone); + pw.println("mSubId=" + mSubId); pw.println("mLinkProperties=" + mLinkProperties); pw.flush(); pw.println("mDataRegState=" + mDataRegState); diff --git a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java index 3a1e87853d..a08c86ed6a 100644 --- a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java +++ b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java @@ -1962,7 +1962,8 @@ public class DcTracker extends Handler { Message msg = obtainMessage(); msg.what = DctConstants.EVENT_DATA_SETUP_COMPLETE; msg.obj = new Pair<ApnContext, Integer>(apnContext, generation); - dataConnection.bringUp(apnContext, profileId, radioTech, msg, generation, requestType); + dataConnection.bringUp(apnContext, profileId, radioTech, msg, generation, requestType, + mPhone.getSubId()); if (DBG) log("setupData: initing!"); return true; |