aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel
diff options
context:
space:
mode:
authorKeith Wong <keithwky@gmail.com>2018-04-12 11:21:08 +0800
committerJo-Philipp Wich <jo@mein.io>2018-12-18 11:28:12 +0100
commit9afbe27bd01fc3b36179120681c1560be3afffdd (patch)
treed013b2703ce57fbbbc2b902956ef17937a31f64b /package/kernel
parent39420c3eadd826cda9e864fa9f436881ec95f6a8 (diff)
downloadupstream-9afbe27bd01fc3b36179120681c1560be3afffdd.tar.gz
upstream-9afbe27bd01fc3b36179120681c1560be3afffdd.tar.bz2
upstream-9afbe27bd01fc3b36179120681c1560be3afffdd.zip
kernel: add kmod-tcp-bbr
This adds support for BBR (Bottleneck Bandwidth and RTT) TCP congestion control. Applications (e.g. webservers, VPN client/server) which initiate connections from router side can benefit from this. This provide an easier way for users to use BBR by selecting / installing kmod-tcp-bbr instead of altering kernel config and compiling firmware by themselves. Signed-off-by: Keith Wong <keithwky@gmail.com> (backported from 79c233daa4caee1a8af0c7a91e1d4aee96d410e9)
Diffstat (limited to 'package/kernel')
-rw-r--r--package/kernel/linux/files/sysctl-tcp-bbr-k4_9.conf5
-rw-r--r--package/kernel/linux/files/sysctl-tcp-bbr.conf4
-rw-r--r--package/kernel/linux/modules/netsupport.mk31
3 files changed, 40 insertions, 0 deletions
diff --git a/package/kernel/linux/files/sysctl-tcp-bbr-k4_9.conf b/package/kernel/linux/files/sysctl-tcp-bbr-k4_9.conf
new file mode 100644
index 0000000000..2f63b72888
--- /dev/null
+++ b/package/kernel/linux/files/sysctl-tcp-bbr-k4_9.conf
@@ -0,0 +1,5 @@
+# Do not edit, changes to this file will be lost on upgrades
+# /etc/sysctl.conf can be used to customize sysctl settings
+
+net.ipv4.tcp_congestion_control=bbr
+net.core.default_qdisc=fq
diff --git a/package/kernel/linux/files/sysctl-tcp-bbr.conf b/package/kernel/linux/files/sysctl-tcp-bbr.conf
new file mode 100644
index 0000000000..3a7dba2f0b
--- /dev/null
+++ b/package/kernel/linux/files/sysctl-tcp-bbr.conf
@@ -0,0 +1,4 @@
+# Do not edit, changes to this file will be lost on upgrades
+# /etc/sysctl.conf can be used to customize sysctl settings
+
+net.ipv4.tcp_congestion_control=bbr
diff --git a/package/kernel/linux/modules/netsupport.mk b/package/kernel/linux/modules/netsupport.mk
index ff76720636..050541488c 100644
--- a/package/kernel/linux/modules/netsupport.mk
+++ b/package/kernel/linux/modules/netsupport.mk
@@ -777,6 +777,37 @@ endef
$(eval $(call KernelPackage,sched))
+define KernelPackage/tcp-bbr
+ SUBMENU:=$(NETWORK_SUPPORT_MENU)
+ TITLE:=BBR TCP congestion control
+ DEPENDS:=@!LINUX_3_18 @!LINUX_4_1 @!LINUX_4_4 +LINUX_4_9:kmod-sched
+ KCONFIG:= \
+ CONFIG_TCP_CONG_ADVANCED=y \
+ CONFIG_TCP_CONG_BBR
+ FILES:=$(LINUX_DIR)/net/ipv4/tcp_bbr.ko
+ AUTOLOAD:=$(call AutoLoad,74,tcp_bbr)
+endef
+
+define KernelPackage/tcp-bbr/description
+ Kernel module for BBR (Bottleneck Bandwidth and RTT) TCP congestion
+ control. It requires the fq ("Fair Queue") pacing packet scheduler.
+ For kernel 4.13+, TCP internal pacing is implemented as fallback.
+endef
+
+ifdef CONFIG_LINUX_4_9
+ TCP_BBR_SYSCTL_CONF:=sysctl-tcp-bbr-k4_9.conf
+else
+ TCP_BBR_SYSCTL_CONF:=sysctl-tcp-bbr.conf
+endif
+
+define KernelPackage/tcp-bbr/install
+ $(INSTALL_DIR) $(1)/etc/sysctl.d
+ $(INSTALL_DATA) ./files/$(TCP_BBR_SYSCTL_CONF) $(1)/etc/sysctl.d/12-tcp-bbr.conf
+endef
+
+$(eval $(call KernelPackage,tcp-bbr))
+
+
define KernelPackage/ax25
SUBMENU:=$(NETWORK_SUPPORT_MENU)
TITLE:=AX25 support