Skip to content

Commit d14e176

Browse files
author
Robert Greenwalt
committed
Update TCP buffer size when switching network type
Import of non-merging change 41612 from AOSP 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: Ic44a557677ffe629e83ce1f522a9f058bee6e7b2
1 parent 99de245 commit d14e176

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

core/java/android/net/MobileDataStateTracker.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,17 @@ public void onReceive(Context context, Intent intent) {
184184
if (!TextUtils.equals(apnType, mApnType)) {
185185
return;
186186
}
187-
mNetworkInfo.setSubtype(TelephonyManager.getDefault().getNetworkType(),
188-
TelephonyManager.getDefault().getNetworkTypeName());
187+
188+
int oldSubtype = mNetworkInfo.getSubtype();
189+
int newSubType = TelephonyManager.getDefault().getNetworkType();
190+
String subTypeName = TelephonyManager.getDefault().getNetworkTypeName();
191+
mNetworkInfo.setSubtype(newSubType, subTypeName);
192+
if (newSubType != oldSubtype && mNetworkInfo.isConnected()) {
193+
Message msg = mTarget.obtainMessage(EVENT_NETWORK_SUBTYPE_CHANGED,
194+
oldSubtype, 0, mNetworkInfo);
195+
msg.sendToTarget();
196+
}
197+
189198
PhoneConstants.DataState state = Enum.valueOf(PhoneConstants.DataState.class,
190199
intent.getStringExtra(PhoneConstants.STATE_KEY));
191200
String reason = intent.getStringExtra(PhoneConstants.STATE_CHANGE_REASON_KEY);

core/java/android/net/NetworkStateTracker.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@ public interface NetworkStateTracker {
6262
*/
6363
public static final int EVENT_RESTORE_DEFAULT_NETWORK = 6;
6464

65+
/**
66+
* msg.what = EVENT_NETWORK_SUBTYPE_CHANGED
67+
* msg.obj = NetworkInfo object
68+
*/
69+
public static final int EVENT_NETWORK_SUBTYPE_CHANGED = 7;
70+
6571
/**
6672
* -------------------------------------------------------------
6773
* Control Interface

services/java/com/android/server/ConnectivityService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2592,6 +2592,11 @@ public void handleMessage(Message msg) {
25922592
// @see bug/4455071
25932593
handleConnectivityChange(info.getType(), false);
25942594
break;
2595+
case NetworkStateTracker.EVENT_NETWORK_SUBTYPE_CHANGED:
2596+
info = (NetworkInfo) msg.obj;
2597+
type = info.getType();
2598+
updateNetworkSettings(mNetTrackers[type]);
2599+
break;
25952600
}
25962601
}
25972602
}

0 commit comments

Comments
 (0)