Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3d2573f7 authored by Stephen Hemminger's avatar Stephen Hemminger Committed by David S. Miller
Browse files

[TCP]: default congestion control menu



Change how default TCP congestion control is chosen. Don't just use
last installed module, instead allow selection during configuration,
and make sure and use the default regardless of load order.

Signed-off-by: default avatarStephen Hemminger <shemminger@osdl.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5b7c714e
Loading
Loading
Loading
Loading
+40 −5
Original line number Diff line number Diff line
@@ -448,7 +448,7 @@ config INET_TCP_DIAG
	depends on INET_DIAG
	def_tristate INET_DIAG

config TCP_CONG_ADVANCED
menuconfig TCP_CONG_ADVANCED
	bool "TCP: advanced congestion control"
	---help---
	  Support for selection of various TCP congestion control
@@ -459,9 +459,7 @@ config TCP_CONG_ADVANCED

	  If unsure, say N.

# TCP Reno is builtin (required as fallback)
menu "TCP congestion control"
	depends on TCP_CONG_ADVANCED
if TCP_CONG_ADVANCED

config TCP_CONG_BIC
	tristate "Binary Increase Congestion (BIC) control"
@@ -574,12 +572,49 @@ config TCP_CONG_VENO
	loss packets.
	See http://www.ntu.edu.sg/home5/ZHOU0022/papers/CPFu03a.pdf

endmenu
choice
	prompt "Default TCP congestion control"
	default DEFAULT_BIC
	help
	  Select the TCP congestion control that will be used by default
	  for all connections.

	config DEFAULT_BIC
		bool "Bic" if TCP_CONG_BIC=y

	config DEFAULT_CUBIC
		bool "Cubic" if TCP_CONG_CUBIC=y

	config DEFAULT_HTCP
		bool "Htcp" if TCP_CONG_HTCP=y

	config DEFAULT_VEGAS
		bool "Vegas" if TCP_CONG_VEGAS=y

	config DEFAULT_WESTWOOD
		bool "Westwood" if TCP_CONG_WESTWOOD=y

	config DEFAULT_RENO
		bool "Reno"

endchoice

endif

config TCP_CONG_BIC
	tristate
	depends on !TCP_CONG_ADVANCED
	default y

config DEFAULT_TCP_CONG
	string
	default "bic" if DEFAULT_BIC
	default "cubic" if DEFAULT_CUBIC
	default "htcp" if DEFAULT_HTCP
	default "vegas" if DEFAULT_VEGAS
	default "westwood" if DEFAULT_WESTWOOD
	default "reno" if DEFAULT_RENO
	default "bic"

source "net/ipv4/ipvs/Kconfig"
+6 −0
Original line number Diff line number Diff line
@@ -129,6 +129,12 @@ static int sysctl_tcp_congestion_control(ctl_table *table, int __user *name,
	return ret;
}

static int __init tcp_congestion_default(void)
{
	return tcp_set_default_congestion_control(CONFIG_DEFAULT_TCP_CONG);
}

late_initcall(tcp_congestion_default);

ctl_table ipv4_table[] = {
        {
+1 −1
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ int tcp_register_congestion_control(struct tcp_congestion_ops *ca)
		printk(KERN_NOTICE "TCP %s already registered\n", ca->name);
		ret = -EEXIST;
	} else {
		list_add_rcu(&ca->list, &tcp_cong_list);
		list_add_tail_rcu(&ca->list, &tcp_cong_list);
		printk(KERN_INFO "TCP %s registered\n", ca->name);
	}
	spin_unlock(&tcp_cong_list_lock);