Loading src/java/com/android/internal/telephony/dataconnection/DataConnection.java +97 −42 Original line number Diff line number Diff line Loading @@ -273,6 +273,8 @@ public class DataConnection extends StateMachine { private int mRilRat = ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN; private int mDataRegState = Integer.MAX_VALUE; private NetworkInfo mNetworkInfo; private int mDownlinkBandwidth = 14; private int mUplinkBandwidth = 14; /** The corresponding network agent for this data connection. */ private DcNetworkAgent mNetworkAgent; Loading Loading @@ -326,7 +328,9 @@ public class DataConnection extends StateMachine { static final int EVENT_NR_STATE_CHANGED = BASE + 27; static final int EVENT_DATA_CONNECTION_METEREDNESS_CHANGED = BASE + 28; static final int EVENT_NR_FREQUENCY_CHANGED = BASE + 29; private static final int CMD_TO_STRING_COUNT = EVENT_NR_FREQUENCY_CHANGED - BASE + 1; static final int EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED = BASE + 30; private static final int CMD_TO_STRING_COUNT = EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED - BASE + 1; private static String[] sCmdToString = new String[CMD_TO_STRING_COUNT]; static { Loading Loading @@ -366,6 +370,8 @@ public class DataConnection extends StateMachine { sCmdToString[EVENT_DATA_CONNECTION_METEREDNESS_CHANGED - BASE] = "EVENT_DATA_CONNECTION_METEREDNESS_CHANGED"; sCmdToString[EVENT_NR_FREQUENCY_CHANGED - BASE] = "EVENT_NR_FREQUENCY_CHANGED"; sCmdToString[EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED - BASE] = "EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED"; } // Convert cmd to string or null if unknown static String cmdToString(int cmd) { Loading Loading @@ -605,6 +611,9 @@ public class DataConnection extends StateMachine { if (nri != null) { networkType = nri.getAccessNetworkTechnology(); mRilRat = ServiceState.networkTypeToRilRadioTechnology(networkType); if (isBandwidthSourceKey(DctConstants.BANDWIDTH_SOURCE_CARRIER_CONFIG_KEY)) { updateLinkBandwidthsFromCarrierConfig(mRilRat); } } mNetworkInfo = new NetworkInfo(ConnectivityManager.TYPE_MOBILE, Loading Loading @@ -926,6 +935,8 @@ public class DataConnection extends StateMachine { mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; mSubscriptionOverride = 0; mUnmeteredOverride = false; mDownlinkBandwidth = 14; mUplinkBandwidth = 14; } /** Loading Loading @@ -1103,21 +1114,64 @@ public class DataConnection extends StateMachine { mLinkProperties.setTcpBufferSizes(sizes); } private void updateLinkBandwidths(NetworkCapabilities caps, int rilRat) { String ratName = ServiceState.rilRadioTechnologyToString(rilRat).toLowerCase(Locale.ROOT); if (ratName.equals("LTE") && isNRConnected()) { private void updateLinkBandwidthsFromCarrierConfig(int rilRat) { String ratName = ServiceState.rilRadioTechnologyToString(rilRat); if (rilRat == ServiceState.RIL_RADIO_TECHNOLOGY_LTE && isNRConnected()) { ratName = mPhone.getServiceState().getNrFrequencyRange() == ServiceState.FREQUENCY_RANGE_MMWAVE ? "NR_NSA_MMWAVE" : "NR_NSA"; == ServiceState.FREQUENCY_RANGE_MMWAVE ? DctConstants.RAT_NAME_NR_NSA_MMWAVE : DctConstants.RAT_NAME_NR_NSA; } if (DBG) log("updateLinkBandwidths: " + ratName); if (DBG) log("updateLinkBandwidthsFromCarrierConfig: " + ratName); Pair<Integer, Integer> values = mDct.getLinkBandwidths(ratName); Pair<Integer, Integer> values = mDct.getLinkBandwidthsFromCarrierConfig(ratName); if (values == null) { values = new Pair<>(14, 14); } caps.setLinkDownstreamBandwidthKbps(values.first); caps.setLinkUpstreamBandwidthKbps(values.second); mDownlinkBandwidth = values.first; mUplinkBandwidth = values.second; } private void updateLinkBandwidthsFromModem(LinkCapacityEstimate lce) { boolean downlinkUpdated = false; boolean uplinkUpdated = false; if (mPhone.getLceStatus() == RILConstants.LCE_ACTIVE) { if (lce.downlinkCapacityKbps != LinkCapacityEstimate.INVALID) { mDownlinkBandwidth = lce.downlinkCapacityKbps; downlinkUpdated = true; } if (lce.uplinkCapacityKbps != LinkCapacityEstimate.INVALID) { mUplinkBandwidth = lce.uplinkCapacityKbps; uplinkUpdated = true; } } if (DBG) log("updateLinkBandwidthsFromModem"); if (!downlinkUpdated || !uplinkUpdated) { String ratName = ServiceState.rilRadioTechnologyToString(mRilRat); if (mRilRat == ServiceState.RIL_RADIO_TECHNOLOGY_LTE && isNRConnected()) { ratName = mPhone.getServiceState().getNrFrequencyRange() == ServiceState.FREQUENCY_RANGE_MMWAVE ? DctConstants.RAT_NAME_NR_NSA_MMWAVE : DctConstants.RAT_NAME_NR_NSA; } Pair<Integer, Integer> values = mDct.getLinkBandwidthsFromCarrierConfig(ratName); if (values != null) { if (!downlinkUpdated) { mDownlinkBandwidth = values.first; } if (!uplinkUpdated) { mUplinkBandwidth = values.second; } } } if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(getNetworkCapabilities(), DataConnection.this); } } private boolean isBandwidthSourceKey(String source) { return source.equals(mPhone.getContext().getResources().getString( com.android.internal.R.string.config_bandwidthEstimateSource)); } /** Loading Loading @@ -1332,7 +1386,8 @@ public class DataConnection extends StateMachine { result.removeCapability(NetworkCapabilities.NET_CAPABILITY_DUN); } updateLinkBandwidths(result, mRilRat); result.setLinkDownstreamBandwidthKbps(mDownlinkBandwidth); result.setLinkUpstreamBandwidthKbps(mUplinkBandwidth); result.setNetworkSpecifier(new TelephonyNetworkSpecifier.Builder() .setSubscriptionId(mSubId).build()); Loading Loading @@ -1651,6 +1706,9 @@ public class DataConnection extends StateMachine { Pair<Integer, Integer> drsRatPair = (Pair<Integer, Integer>)ar.result; mDataRegState = drsRatPair.first; updateTcpBufferSizes(drsRatPair.second); if (isBandwidthSourceKey(DctConstants.BANDWIDTH_SOURCE_CARRIER_CONFIG_KEY)) { updateLinkBandwidthsFromCarrierConfig(drsRatPair.second); } mRilRat = drsRatPair.second; if (DBG) { log("DcDefaultState: EVENT_DATA_CONNECTION_DRS_OR_RAT_CHANGED" Loading Loading @@ -2016,6 +2074,9 @@ public class DataConnection extends StateMachine { mNetworkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, mNetworkInfo.getReason(), null); updateTcpBufferSizes(mRilRat); if (isBandwidthSourceKey(DctConstants.BANDWIDTH_SOURCE_CARRIER_CONFIG_KEY)) { updateLinkBandwidthsFromCarrierConfig(mRilRat); } final NetworkAgentConfig.Builder configBuilder = new NetworkAgentConfig.Builder(); configBuilder.setLegacyType(ConnectivityManager.TYPE_MOBILE); Loading Loading @@ -2236,6 +2297,9 @@ public class DataConnection extends StateMachine { Pair<Integer, Integer> drsRatPair = (Pair<Integer, Integer>) ar.result; mDataRegState = drsRatPair.first; updateTcpBufferSizes(drsRatPair.second); if (isBandwidthSourceKey(DctConstants.BANDWIDTH_SOURCE_CARRIER_CONFIG_KEY)) { updateLinkBandwidthsFromCarrierConfig(drsRatPair.second); } mRilRat = drsRatPair.second; if (DBG) { log("DcActiveState: EVENT_DATA_CONNECTION_DRS_OR_RAT_CHANGED" Loading @@ -2252,6 +2316,18 @@ public class DataConnection extends StateMachine { retVal = HANDLED; break; } case EVENT_NR_FREQUENCY_CHANGED: // fallthrough case EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED: if (isBandwidthSourceKey(DctConstants.BANDWIDTH_SOURCE_CARRIER_CONFIG_KEY)) { updateLinkBandwidthsFromCarrierConfig(mRilRat); } if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(getNetworkCapabilities(), DataConnection.this); } retVal = HANDLED; break; case EVENT_DATA_CONNECTION_METEREDNESS_CHANGED: boolean isUnmetered = (boolean) msg.obj; if (isUnmetered == mUnmeteredOverride) { Loading @@ -2260,14 +2336,12 @@ public class DataConnection extends StateMachine { } mUnmeteredOverride = isUnmetered; // fallthrough case EVENT_NR_FREQUENCY_CHANGED: case EVENT_DATA_CONNECTION_ROAM_ON: case EVENT_DATA_CONNECTION_ROAM_OFF: case EVENT_DATA_CONNECTION_OVERRIDE_CHANGED: { if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(getNetworkCapabilities(), DataConnection.this); mNetworkAgent.sendNetworkInfo(mNetworkInfo, DataConnection.this); } retVal = HANDLED; break; Loading @@ -2277,21 +2351,8 @@ public class DataConnection extends StateMachine { if (ar.exception != null) { log("EVENT_BW_REFRESH_RESPONSE: error ignoring, e=" + ar.exception); } else { boolean useModem = DctConstants.BANDWIDTH_SOURCE_MODEM_KEY.equals( mPhone.getContext().getResources().getString(com.android.internal.R .string.config_bandwidthEstimateSource)); NetworkCapabilities nc = getNetworkCapabilities(); LinkCapacityEstimate lce = (LinkCapacityEstimate) ar.result; if (useModem && mPhone.getLceStatus() == RILConstants.LCE_ACTIVE) { if (lce.downlinkCapacityKbps != LinkCapacityEstimate.INVALID) { nc.setLinkDownstreamBandwidthKbps(lce.downlinkCapacityKbps); } if (lce.uplinkCapacityKbps != LinkCapacityEstimate.INVALID) { nc.setLinkUpstreamBandwidthKbps(lce.uplinkCapacityKbps); } } if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(nc, DataConnection.this); if (isBandwidthSourceKey(DctConstants.BANDWIDTH_SOURCE_MODEM_KEY)) { updateLinkBandwidthsFromModem((LinkCapacityEstimate) ar.result); } } retVal = HANDLED; Loading Loading @@ -2408,21 +2469,8 @@ public class DataConnection extends StateMachine { if (ar.exception != null) { loge("EVENT_LINK_CAPACITY_CHANGED e=" + ar.exception); } else { boolean useModem = DctConstants.BANDWIDTH_SOURCE_MODEM_KEY.equals( mPhone.getContext().getResources().getString(com.android.internal.R .string.config_bandwidthEstimateSource)); NetworkCapabilities nc = getNetworkCapabilities(); if (useModem) { LinkCapacityEstimate lce = (LinkCapacityEstimate) ar.result; if (lce.downlinkCapacityKbps != LinkCapacityEstimate.INVALID) { nc.setLinkDownstreamBandwidthKbps(lce.downlinkCapacityKbps); } if (lce.uplinkCapacityKbps != LinkCapacityEstimate.INVALID) { nc.setLinkUpstreamBandwidthKbps(lce.uplinkCapacityKbps); } } if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(nc, DataConnection.this); if (isBandwidthSourceKey(DctConstants.BANDWIDTH_SOURCE_MODEM_KEY)) { updateLinkBandwidthsFromModem((LinkCapacityEstimate) ar.result); } } retVal = HANDLED; Loading Loading @@ -2469,8 +2517,13 @@ public class DataConnection extends StateMachine { } case EVENT_NR_STATE_CHANGED: { updateTcpBufferSizes(mRilRat); if (isBandwidthSourceKey(DctConstants.BANDWIDTH_SOURCE_CARRIER_CONFIG_KEY)) { updateLinkBandwidthsFromCarrierConfig(mRilRat); } if (mNetworkAgent != null) { mNetworkAgent.sendLinkProperties(mLinkProperties, DataConnection.this); mNetworkAgent.sendNetworkCapabilities(getNetworkCapabilities(), DataConnection.this); } retVal = HANDLED; break; Loading Loading @@ -3028,6 +3081,8 @@ public class DataConnection extends StateMachine { pw.println("mRestrictedNetworkOverride=" + mRestrictedNetworkOverride); pw.println("mUnmeteredUseOnly=" + mUnmeteredUseOnly); pw.println("mUnmeteredOverride=" + mUnmeteredOverride); pw.println("mDownlinkBandwidth" + mDownlinkBandwidth); pw.println("mUplinkBandwidth=" + mUplinkBandwidth); pw.println("disallowedApnTypes=" + ApnSetting.getApnTypesStringFromBitmask(getDisallowedApnTypes())); pw.println("mInstanceNumber=" + mInstanceNumber); Loading src/java/com/android/internal/telephony/dataconnection/DcTracker.java +13 −8 Original line number Diff line number Diff line Loading @@ -3960,19 +3960,24 @@ public class DcTracker extends Handler { } } if (useLte) { Pair<Integer, Integer> ltePair = mBandwidths.get("LTE"); Pair<Integer, Integer> ltePair = mBandwidths.get(DctConstants.RAT_NAME_LTE); if (ltePair != null) { if (mBandwidths.containsKey("NR_NSA")) { mBandwidths.put("NR_NSA", new Pair<>(mBandwidths.get("NR_NSA").first, ltePair.second)); if (mBandwidths.containsKey(DctConstants.RAT_NAME_NR_NSA)) { mBandwidths.put(DctConstants.RAT_NAME_NR_NSA, new Pair<>( mBandwidths.get(DctConstants.RAT_NAME_NR_NSA).first, ltePair.second)); } if (mBandwidths.containsKey("NR_NSA_MMWAVE")) { mBandwidths.put("NR_NSA_MMWAVE", new Pair<>(mBandwidths.get("NR_NSA_MMWAVE").first, ltePair.second)); if (mBandwidths.containsKey(DctConstants.RAT_NAME_NR_NSA_MMWAVE)) { mBandwidths.put(DctConstants.RAT_NAME_NR_NSA_MMWAVE, new Pair<>( mBandwidths.get(DctConstants.RAT_NAME_NR_NSA_MMWAVE).first, ltePair.second)); } } } } for (DataConnection dc : mDataConnections.values()) { dc.sendMessage(DataConnection.EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED); } } /** Loading @@ -3980,7 +3985,7 @@ public class DcTracker extends Handler { * @param ratName RAT name from ServiceState#rilRadioTechnologyToString. * @return pair of downstream/upstream values (kbps), or null if the config is not defined. */ public Pair<Integer, Integer> getLinkBandwidths(String ratName) { public Pair<Integer, Integer> getLinkBandwidthsFromCarrierConfig(String ratName) { return mBandwidths.get(ratName); } Loading Loading
src/java/com/android/internal/telephony/dataconnection/DataConnection.java +97 −42 Original line number Diff line number Diff line Loading @@ -273,6 +273,8 @@ public class DataConnection extends StateMachine { private int mRilRat = ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN; private int mDataRegState = Integer.MAX_VALUE; private NetworkInfo mNetworkInfo; private int mDownlinkBandwidth = 14; private int mUplinkBandwidth = 14; /** The corresponding network agent for this data connection. */ private DcNetworkAgent mNetworkAgent; Loading Loading @@ -326,7 +328,9 @@ public class DataConnection extends StateMachine { static final int EVENT_NR_STATE_CHANGED = BASE + 27; static final int EVENT_DATA_CONNECTION_METEREDNESS_CHANGED = BASE + 28; static final int EVENT_NR_FREQUENCY_CHANGED = BASE + 29; private static final int CMD_TO_STRING_COUNT = EVENT_NR_FREQUENCY_CHANGED - BASE + 1; static final int EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED = BASE + 30; private static final int CMD_TO_STRING_COUNT = EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED - BASE + 1; private static String[] sCmdToString = new String[CMD_TO_STRING_COUNT]; static { Loading Loading @@ -366,6 +370,8 @@ public class DataConnection extends StateMachine { sCmdToString[EVENT_DATA_CONNECTION_METEREDNESS_CHANGED - BASE] = "EVENT_DATA_CONNECTION_METEREDNESS_CHANGED"; sCmdToString[EVENT_NR_FREQUENCY_CHANGED - BASE] = "EVENT_NR_FREQUENCY_CHANGED"; sCmdToString[EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED - BASE] = "EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED"; } // Convert cmd to string or null if unknown static String cmdToString(int cmd) { Loading Loading @@ -605,6 +611,9 @@ public class DataConnection extends StateMachine { if (nri != null) { networkType = nri.getAccessNetworkTechnology(); mRilRat = ServiceState.networkTypeToRilRadioTechnology(networkType); if (isBandwidthSourceKey(DctConstants.BANDWIDTH_SOURCE_CARRIER_CONFIG_KEY)) { updateLinkBandwidthsFromCarrierConfig(mRilRat); } } mNetworkInfo = new NetworkInfo(ConnectivityManager.TYPE_MOBILE, Loading Loading @@ -926,6 +935,8 @@ public class DataConnection extends StateMachine { mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; mSubscriptionOverride = 0; mUnmeteredOverride = false; mDownlinkBandwidth = 14; mUplinkBandwidth = 14; } /** Loading Loading @@ -1103,21 +1114,64 @@ public class DataConnection extends StateMachine { mLinkProperties.setTcpBufferSizes(sizes); } private void updateLinkBandwidths(NetworkCapabilities caps, int rilRat) { String ratName = ServiceState.rilRadioTechnologyToString(rilRat).toLowerCase(Locale.ROOT); if (ratName.equals("LTE") && isNRConnected()) { private void updateLinkBandwidthsFromCarrierConfig(int rilRat) { String ratName = ServiceState.rilRadioTechnologyToString(rilRat); if (rilRat == ServiceState.RIL_RADIO_TECHNOLOGY_LTE && isNRConnected()) { ratName = mPhone.getServiceState().getNrFrequencyRange() == ServiceState.FREQUENCY_RANGE_MMWAVE ? "NR_NSA_MMWAVE" : "NR_NSA"; == ServiceState.FREQUENCY_RANGE_MMWAVE ? DctConstants.RAT_NAME_NR_NSA_MMWAVE : DctConstants.RAT_NAME_NR_NSA; } if (DBG) log("updateLinkBandwidths: " + ratName); if (DBG) log("updateLinkBandwidthsFromCarrierConfig: " + ratName); Pair<Integer, Integer> values = mDct.getLinkBandwidths(ratName); Pair<Integer, Integer> values = mDct.getLinkBandwidthsFromCarrierConfig(ratName); if (values == null) { values = new Pair<>(14, 14); } caps.setLinkDownstreamBandwidthKbps(values.first); caps.setLinkUpstreamBandwidthKbps(values.second); mDownlinkBandwidth = values.first; mUplinkBandwidth = values.second; } private void updateLinkBandwidthsFromModem(LinkCapacityEstimate lce) { boolean downlinkUpdated = false; boolean uplinkUpdated = false; if (mPhone.getLceStatus() == RILConstants.LCE_ACTIVE) { if (lce.downlinkCapacityKbps != LinkCapacityEstimate.INVALID) { mDownlinkBandwidth = lce.downlinkCapacityKbps; downlinkUpdated = true; } if (lce.uplinkCapacityKbps != LinkCapacityEstimate.INVALID) { mUplinkBandwidth = lce.uplinkCapacityKbps; uplinkUpdated = true; } } if (DBG) log("updateLinkBandwidthsFromModem"); if (!downlinkUpdated || !uplinkUpdated) { String ratName = ServiceState.rilRadioTechnologyToString(mRilRat); if (mRilRat == ServiceState.RIL_RADIO_TECHNOLOGY_LTE && isNRConnected()) { ratName = mPhone.getServiceState().getNrFrequencyRange() == ServiceState.FREQUENCY_RANGE_MMWAVE ? DctConstants.RAT_NAME_NR_NSA_MMWAVE : DctConstants.RAT_NAME_NR_NSA; } Pair<Integer, Integer> values = mDct.getLinkBandwidthsFromCarrierConfig(ratName); if (values != null) { if (!downlinkUpdated) { mDownlinkBandwidth = values.first; } if (!uplinkUpdated) { mUplinkBandwidth = values.second; } } } if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(getNetworkCapabilities(), DataConnection.this); } } private boolean isBandwidthSourceKey(String source) { return source.equals(mPhone.getContext().getResources().getString( com.android.internal.R.string.config_bandwidthEstimateSource)); } /** Loading Loading @@ -1332,7 +1386,8 @@ public class DataConnection extends StateMachine { result.removeCapability(NetworkCapabilities.NET_CAPABILITY_DUN); } updateLinkBandwidths(result, mRilRat); result.setLinkDownstreamBandwidthKbps(mDownlinkBandwidth); result.setLinkUpstreamBandwidthKbps(mUplinkBandwidth); result.setNetworkSpecifier(new TelephonyNetworkSpecifier.Builder() .setSubscriptionId(mSubId).build()); Loading Loading @@ -1651,6 +1706,9 @@ public class DataConnection extends StateMachine { Pair<Integer, Integer> drsRatPair = (Pair<Integer, Integer>)ar.result; mDataRegState = drsRatPair.first; updateTcpBufferSizes(drsRatPair.second); if (isBandwidthSourceKey(DctConstants.BANDWIDTH_SOURCE_CARRIER_CONFIG_KEY)) { updateLinkBandwidthsFromCarrierConfig(drsRatPair.second); } mRilRat = drsRatPair.second; if (DBG) { log("DcDefaultState: EVENT_DATA_CONNECTION_DRS_OR_RAT_CHANGED" Loading Loading @@ -2016,6 +2074,9 @@ public class DataConnection extends StateMachine { mNetworkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, mNetworkInfo.getReason(), null); updateTcpBufferSizes(mRilRat); if (isBandwidthSourceKey(DctConstants.BANDWIDTH_SOURCE_CARRIER_CONFIG_KEY)) { updateLinkBandwidthsFromCarrierConfig(mRilRat); } final NetworkAgentConfig.Builder configBuilder = new NetworkAgentConfig.Builder(); configBuilder.setLegacyType(ConnectivityManager.TYPE_MOBILE); Loading Loading @@ -2236,6 +2297,9 @@ public class DataConnection extends StateMachine { Pair<Integer, Integer> drsRatPair = (Pair<Integer, Integer>) ar.result; mDataRegState = drsRatPair.first; updateTcpBufferSizes(drsRatPair.second); if (isBandwidthSourceKey(DctConstants.BANDWIDTH_SOURCE_CARRIER_CONFIG_KEY)) { updateLinkBandwidthsFromCarrierConfig(drsRatPair.second); } mRilRat = drsRatPair.second; if (DBG) { log("DcActiveState: EVENT_DATA_CONNECTION_DRS_OR_RAT_CHANGED" Loading @@ -2252,6 +2316,18 @@ public class DataConnection extends StateMachine { retVal = HANDLED; break; } case EVENT_NR_FREQUENCY_CHANGED: // fallthrough case EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED: if (isBandwidthSourceKey(DctConstants.BANDWIDTH_SOURCE_CARRIER_CONFIG_KEY)) { updateLinkBandwidthsFromCarrierConfig(mRilRat); } if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(getNetworkCapabilities(), DataConnection.this); } retVal = HANDLED; break; case EVENT_DATA_CONNECTION_METEREDNESS_CHANGED: boolean isUnmetered = (boolean) msg.obj; if (isUnmetered == mUnmeteredOverride) { Loading @@ -2260,14 +2336,12 @@ public class DataConnection extends StateMachine { } mUnmeteredOverride = isUnmetered; // fallthrough case EVENT_NR_FREQUENCY_CHANGED: case EVENT_DATA_CONNECTION_ROAM_ON: case EVENT_DATA_CONNECTION_ROAM_OFF: case EVENT_DATA_CONNECTION_OVERRIDE_CHANGED: { if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(getNetworkCapabilities(), DataConnection.this); mNetworkAgent.sendNetworkInfo(mNetworkInfo, DataConnection.this); } retVal = HANDLED; break; Loading @@ -2277,21 +2351,8 @@ public class DataConnection extends StateMachine { if (ar.exception != null) { log("EVENT_BW_REFRESH_RESPONSE: error ignoring, e=" + ar.exception); } else { boolean useModem = DctConstants.BANDWIDTH_SOURCE_MODEM_KEY.equals( mPhone.getContext().getResources().getString(com.android.internal.R .string.config_bandwidthEstimateSource)); NetworkCapabilities nc = getNetworkCapabilities(); LinkCapacityEstimate lce = (LinkCapacityEstimate) ar.result; if (useModem && mPhone.getLceStatus() == RILConstants.LCE_ACTIVE) { if (lce.downlinkCapacityKbps != LinkCapacityEstimate.INVALID) { nc.setLinkDownstreamBandwidthKbps(lce.downlinkCapacityKbps); } if (lce.uplinkCapacityKbps != LinkCapacityEstimate.INVALID) { nc.setLinkUpstreamBandwidthKbps(lce.uplinkCapacityKbps); } } if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(nc, DataConnection.this); if (isBandwidthSourceKey(DctConstants.BANDWIDTH_SOURCE_MODEM_KEY)) { updateLinkBandwidthsFromModem((LinkCapacityEstimate) ar.result); } } retVal = HANDLED; Loading Loading @@ -2408,21 +2469,8 @@ public class DataConnection extends StateMachine { if (ar.exception != null) { loge("EVENT_LINK_CAPACITY_CHANGED e=" + ar.exception); } else { boolean useModem = DctConstants.BANDWIDTH_SOURCE_MODEM_KEY.equals( mPhone.getContext().getResources().getString(com.android.internal.R .string.config_bandwidthEstimateSource)); NetworkCapabilities nc = getNetworkCapabilities(); if (useModem) { LinkCapacityEstimate lce = (LinkCapacityEstimate) ar.result; if (lce.downlinkCapacityKbps != LinkCapacityEstimate.INVALID) { nc.setLinkDownstreamBandwidthKbps(lce.downlinkCapacityKbps); } if (lce.uplinkCapacityKbps != LinkCapacityEstimate.INVALID) { nc.setLinkUpstreamBandwidthKbps(lce.uplinkCapacityKbps); } } if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities(nc, DataConnection.this); if (isBandwidthSourceKey(DctConstants.BANDWIDTH_SOURCE_MODEM_KEY)) { updateLinkBandwidthsFromModem((LinkCapacityEstimate) ar.result); } } retVal = HANDLED; Loading Loading @@ -2469,8 +2517,13 @@ public class DataConnection extends StateMachine { } case EVENT_NR_STATE_CHANGED: { updateTcpBufferSizes(mRilRat); if (isBandwidthSourceKey(DctConstants.BANDWIDTH_SOURCE_CARRIER_CONFIG_KEY)) { updateLinkBandwidthsFromCarrierConfig(mRilRat); } if (mNetworkAgent != null) { mNetworkAgent.sendLinkProperties(mLinkProperties, DataConnection.this); mNetworkAgent.sendNetworkCapabilities(getNetworkCapabilities(), DataConnection.this); } retVal = HANDLED; break; Loading Loading @@ -3028,6 +3081,8 @@ public class DataConnection extends StateMachine { pw.println("mRestrictedNetworkOverride=" + mRestrictedNetworkOverride); pw.println("mUnmeteredUseOnly=" + mUnmeteredUseOnly); pw.println("mUnmeteredOverride=" + mUnmeteredOverride); pw.println("mDownlinkBandwidth" + mDownlinkBandwidth); pw.println("mUplinkBandwidth=" + mUplinkBandwidth); pw.println("disallowedApnTypes=" + ApnSetting.getApnTypesStringFromBitmask(getDisallowedApnTypes())); pw.println("mInstanceNumber=" + mInstanceNumber); Loading
src/java/com/android/internal/telephony/dataconnection/DcTracker.java +13 −8 Original line number Diff line number Diff line Loading @@ -3960,19 +3960,24 @@ public class DcTracker extends Handler { } } if (useLte) { Pair<Integer, Integer> ltePair = mBandwidths.get("LTE"); Pair<Integer, Integer> ltePair = mBandwidths.get(DctConstants.RAT_NAME_LTE); if (ltePair != null) { if (mBandwidths.containsKey("NR_NSA")) { mBandwidths.put("NR_NSA", new Pair<>(mBandwidths.get("NR_NSA").first, ltePair.second)); if (mBandwidths.containsKey(DctConstants.RAT_NAME_NR_NSA)) { mBandwidths.put(DctConstants.RAT_NAME_NR_NSA, new Pair<>( mBandwidths.get(DctConstants.RAT_NAME_NR_NSA).first, ltePair.second)); } if (mBandwidths.containsKey("NR_NSA_MMWAVE")) { mBandwidths.put("NR_NSA_MMWAVE", new Pair<>(mBandwidths.get("NR_NSA_MMWAVE").first, ltePair.second)); if (mBandwidths.containsKey(DctConstants.RAT_NAME_NR_NSA_MMWAVE)) { mBandwidths.put(DctConstants.RAT_NAME_NR_NSA_MMWAVE, new Pair<>( mBandwidths.get(DctConstants.RAT_NAME_NR_NSA_MMWAVE).first, ltePair.second)); } } } } for (DataConnection dc : mDataConnections.values()) { dc.sendMessage(DataConnection.EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED); } } /** Loading @@ -3980,7 +3985,7 @@ public class DcTracker extends Handler { * @param ratName RAT name from ServiceState#rilRadioTechnologyToString. * @return pair of downstream/upstream values (kbps), or null if the config is not defined. */ public Pair<Integer, Integer> getLinkBandwidths(String ratName) { public Pair<Integer, Integer> getLinkBandwidthsFromCarrierConfig(String ratName) { return mBandwidths.get(ratName); } Loading