Fix for updating TCP buffer size when switching network type

When PDP connects in GSM network, the TCP buffer window size is
set to max 8760. If the phone swicthes to UMTS, the TCP buffer
size is not updated to UMTS, i.e. GPRS buffer size is still
used with limited data transfer spead as a result.
This fix makes sure the TCP buffer size is updated when
switching network type.

Change-Id: Iaa527c84f56cae108f4c7276bbed10552faaff6c
This commit is contained in:
Magnus Strandberg
2012-08-17 11:36:55 +02:00
committed by Zoran Jovanovic
parent 2c932143ff
commit 1968256926
3 changed files with 22 additions and 2 deletions

View File

@@ -184,8 +184,17 @@ public class MobileDataStateTracker implements NetworkStateTracker {
if (!TextUtils.equals(apnType, mApnType)) {
return;
}
mNetworkInfo.setSubtype(TelephonyManager.getDefault().getNetworkType(),
TelephonyManager.getDefault().getNetworkTypeName());
int oldSubtype = mNetworkInfo.getSubtype();
int newSubType = TelephonyManager.getDefault().getNetworkType();
String subTypeName = TelephonyManager.getDefault().getNetworkTypeName();
mNetworkInfo.setSubtype(newSubType, subTypeName);
if (newSubType != oldSubtype && mNetworkInfo.isConnected()) {
Message msg = mTarget.obtainMessage(EVENT_NETWORK_SUBTYPE_CHANGED,
oldSubtype, 0, mNetworkInfo);
msg.sendToTarget();
}
PhoneConstants.DataState state = Enum.valueOf(PhoneConstants.DataState.class,
intent.getStringExtra(PhoneConstants.STATE_KEY));
String reason = intent.getStringExtra(PhoneConstants.STATE_CHANGE_REASON_KEY);

View File

@@ -68,6 +68,12 @@ public interface NetworkStateTracker {
*/
public static final int EVENT_RESTORE_DEFAULT_NETWORK = 6;
/**
* msg.what = EVENT_NETWORK_SUBTYPE_CHANGED
* msg.obj = NetworkInfo object
*/
public static final int EVENT_NETWORK_SUBTYPE_CHANGED = 7;
/**
* -------------------------------------------------------------
* Control Interface

View File

@@ -2490,6 +2490,11 @@ private NetworkStateTracker makeWimaxStateTracker() {
// @see bug/4455071
handleConnectivityChange(info.getType(), false);
break;
case NetworkStateTracker.EVENT_NETWORK_SUBTYPE_CHANGED:
info = (NetworkInfo) msg.obj;
type = info.getType();
updateNetworkSettings(mNetTrackers[type]);
break;
case EVENT_CLEAR_NET_TRANSITION_WAKELOCK:
String causedBy = null;
synchronized (ConnectivityService.this) {