ConnectivityService: add support to set TCP initial rwnd

The value for the TCP initial receive window comes from,
in order,

kernel
  /proc/sys/net/ipv4/tcp_default_init_rwnd

init.rc (via properties)
  net.tcp.default_init_rwnd

properties
  net.tcp.default_init_rwnd

gservices
  Settings.Global.TCP_DEFAULT_INIT_RWND

Bug: 12020135
Change-Id: I0e271be19472900fa9f3bab037d53383ec014a9e
This commit is contained in:
JP Abgrall
2014-02-21 12:05:20 -08:00
parent a796168da0
commit 3f7f3221df
2 changed files with 15 additions and 0 deletions

View File

@@ -5134,6 +5134,12 @@ public final class Settings {
*/
public static final String SMS_SHORT_CODE_RULE = "sms_short_code_rule";
/**
* Used to select TCP's default initial receiver window size in segments - defaults to a build config value
* @hide
*/
public static final String TCP_DEFAULT_INIT_RWND = "tcp_default_init_rwnd";
/**
* Used to disable Tethering on a device - defaults to true
* @hide

View File

@@ -2757,6 +2757,15 @@ public class ConnectivityService extends IConnectivityManager.Stub {
}
setBufferSize(bufferSizes);
}
final String defaultRwndKey = "net.tcp.default_init_rwnd";
int defaultRwndValue = SystemProperties.getInt(defaultRwndKey, 0);
Integer rwndValue = Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.TCP_DEFAULT_INIT_RWND, defaultRwndValue);
final String sysctlKey = "sys.sysctl.tcp_def_init_rwnd";
if (rwndValue != 0) {
SystemProperties.set(sysctlKey, rwndValue.toString());
}
}
/**