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

Commit cbc64458 authored by Pengquan Meng's avatar Pengquan Meng
Browse files

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
parent 439fdc37
Loading
Loading
Loading
Loading
+18 −4
Original line number Original line Diff line number Diff line
@@ -47,6 +47,7 @@ import android.telephony.DataFailCause;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.Rlog;
import android.telephony.Rlog;
import android.telephony.ServiceState;
import android.telephony.ServiceState;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.TelephonyManager;
import android.telephony.data.ApnSetting;
import android.telephony.data.ApnSetting;
import android.telephony.data.DataCallResponse;
import android.telephony.data.DataCallResponse;
@@ -154,6 +155,9 @@ public class DataConnection extends StateMachine {
    // The score we report to connectivity service
    // The score we report to connectivity service
    private int mScore;
    private int mScore;


    // The subscription id associated with this data connection.
    private int mSubId;

    // The data connection controller
    // The data connection controller
    private DcController mDcController;
    private DcController mDcController;


@@ -182,16 +186,18 @@ public class DataConnection extends StateMachine {
        final int mConnectionGeneration;
        final int mConnectionGeneration;
        @RequestNetworkType
        @RequestNetworkType
        final int mRequestType;
        final int mRequestType;
        final int mSubId;


        ConnectionParams(ApnContext apnContext, int profileId, int rilRadioTechnology,
        ConnectionParams(ApnContext apnContext, int profileId, int rilRadioTechnology,
                         Message onCompletedMsg, int connectionGeneration,
                         Message onCompletedMsg, int connectionGeneration,
                         @RequestNetworkType int requestType) {
                         @RequestNetworkType int requestType, int subId) {
            mApnContext = apnContext;
            mApnContext = apnContext;
            mProfileId = profileId;
            mProfileId = profileId;
            mRilRat = rilRadioTechnology;
            mRilRat = rilRadioTechnology;
            mOnCompletedMsg = onCompletedMsg;
            mOnCompletedMsg = onCompletedMsg;
            mConnectionGeneration = connectionGeneration;
            mConnectionGeneration = connectionGeneration;
            mRequestType = requestType;
            mRequestType = requestType;
            mSubId = subId;
        }
        }


        @Override
        @Override
@@ -201,6 +207,7 @@ public class DataConnection extends StateMachine {
                    + " mRat=" + mRilRat
                    + " mRat=" + mRilRat
                    + " mOnCompletedMsg=" + msgToString(mOnCompletedMsg)
                    + " mOnCompletedMsg=" + msgToString(mOnCompletedMsg)
                    + " mRequestType=" + DcTracker.requestTypeToString(mRequestType)
                    + " mRequestType=" + DcTracker.requestTypeToString(mRequestType)
                    + " mSubId=" + mSubId
                    + "}";
                    + "}";
        }
        }
    }
    }
@@ -872,6 +879,7 @@ public class DataConnection extends StateMachine {
        mRestrictedNetworkOverride = false;
        mRestrictedNetworkOverride = false;
        mDcFailCause = DataFailCause.NONE;
        mDcFailCause = DataFailCause.NONE;
        mDisabledApnTypeBitMask = 0;
        mDisabledApnTypeBitMask = 0;
        mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    }
    }


    /**
    /**
@@ -1253,7 +1261,7 @@ public class DataConnection extends StateMachine {
        result.setLinkUpstreamBandwidthKbps(up);
        result.setLinkUpstreamBandwidthKbps(up);
        result.setLinkDownstreamBandwidthKbps(down);
        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,
        result.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING,
                !mPhone.getServiceState().getDataRoaming());
                !mPhone.getServiceState().getDataRoaming());
@@ -1723,6 +1731,10 @@ public class DataConnection extends StateMachine {
                        return HANDLED;
                        return HANDLED;
                    }
                    }


                    if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
                        mSubId = cp.mSubId;
                    }

                    transitionTo(mActivatingState);
                    transitionTo(mActivatingState);
                    return HANDLED;
                    return HANDLED;
                case EVENT_DISCONNECT:
                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
     * @param connectionGeneration used to track a single connection request so disconnects can get
     *                             ignored if obsolete.
     *                             ignored if obsolete.
     * @param requestType Data request type
     * @param requestType Data request type
     * @param subId the subscription id associated with this data connection.
     */
     */
    public void bringUp(ApnContext apnContext, int profileId, int rilRadioTechnology,
    public void bringUp(ApnContext apnContext, int profileId, int rilRadioTechnology,
                        Message onCompletedMsg, int connectionGeneration,
                        Message onCompletedMsg, int connectionGeneration,
                        @RequestNetworkType int requestType) {
                        @RequestNetworkType int requestType, int subId) {
        if (DBG) {
        if (DBG) {
            log("bringUp: apnContext=" + apnContext + " onCompletedMsg=" + onCompletedMsg);
            log("bringUp: apnContext=" + apnContext + " onCompletedMsg=" + onCompletedMsg);
        }
        }
        sendMessage(DataConnection.EVENT_CONNECT,
        sendMessage(DataConnection.EVENT_CONNECT,
                new ConnectionParams(apnContext, profileId, rilRadioTechnology, onCompletedMsg,
                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("mDisconnectParams=" + mDisconnectParams);
        pw.println("mDcFailCause=" + mDcFailCause);
        pw.println("mDcFailCause=" + mDcFailCause);
        pw.println("mPhone=" + mPhone);
        pw.println("mPhone=" + mPhone);
        pw.println("mSubId=" + mSubId);
        pw.println("mLinkProperties=" + mLinkProperties);
        pw.println("mLinkProperties=" + mLinkProperties);
        pw.flush();
        pw.flush();
        pw.println("mDataRegState=" + mDataRegState);
        pw.println("mDataRegState=" + mDataRegState);
+2 −1
Original line number Original line Diff line number Diff line
@@ -1962,7 +1962,8 @@ public class DcTracker extends Handler {
        Message msg = obtainMessage();
        Message msg = obtainMessage();
        msg.what = DctConstants.EVENT_DATA_SETUP_COMPLETE;
        msg.what = DctConstants.EVENT_DATA_SETUP_COMPLETE;
        msg.obj = new Pair<ApnContext, Integer>(apnContext, generation);
        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!");
        if (DBG) log("setupData: initing!");
        return true;
        return true;