From 3f7f3221dff1a4b2bac3a2dc3e39f732d44fdf2a Mon Sep 17 00:00:00 2001 From: JP Abgrall Date: Fri, 21 Feb 2014 12:05:20 -0800 Subject: 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 --- core/java/android/provider/Settings.java | 6 ++++++ services/java/com/android/server/ConnectivityService.java | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 7f245394d246..c75a02cc5a5d 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -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 diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index 83a3bfd05fbb..6a28fd67bb7e 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -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()); + } } /** -- cgit v1.2.3-59-g8ed1b