aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPengquan Meng <mpq@google.com>2019-06-12 14:05:53 -0700
committerPengquan Meng <mpq@google.com>2019-06-12 16:16:32 -0700
commitcbc644587307c3af516de196defc06ebc408764b (patch)
tree44bccde6004731aa3500d560eea177bbfb11a50a
parent439fdc37cd08138b7bce71b9ea2d9249a9449a11 (diff)
downloadtelephony-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.java22
-rw-r--r--src/java/com/android/internal/telephony/dataconnection/DcTracker.java3
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;