diff options
-rw-r--r-- | net/ipv4/Kconfig | 45 | ||||
-rw-r--r-- | net/ipv4/sysctl_net_ipv4.c | 6 | ||||
-rw-r--r-- | net/ipv4/tcp_cong.c | 2 |
3 files changed, 47 insertions, 6 deletions
diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig index 1650b64415aa..1bbc3689cd8a 100644 --- a/net/ipv4/Kconfig +++ b/net/ipv4/Kconfig | |||
@@ -448,7 +448,7 @@ config INET_TCP_DIAG | |||
448 | depends on INET_DIAG | 448 | depends on INET_DIAG |
449 | def_tristate INET_DIAG | 449 | def_tristate INET_DIAG |
450 | 450 | ||
451 | config TCP_CONG_ADVANCED | 451 | menuconfig TCP_CONG_ADVANCED |
452 | bool "TCP: advanced congestion control" | 452 | bool "TCP: advanced congestion control" |
453 | ---help--- | 453 | ---help--- |
454 | Support for selection of various TCP congestion control | 454 | Support for selection of various TCP congestion control |
@@ -459,9 +459,7 @@ config TCP_CONG_ADVANCED | |||
459 | 459 | ||
460 | If unsure, say N. | 460 | If unsure, say N. |
461 | 461 | ||
462 | # TCP Reno is builtin (required as fallback) | 462 | if TCP_CONG_ADVANCED |
463 | menu "TCP congestion control" | ||
464 | depends on TCP_CONG_ADVANCED | ||
465 | 463 | ||
466 | config TCP_CONG_BIC | 464 | config TCP_CONG_BIC |
467 | tristate "Binary Increase Congestion (BIC) control" | 465 | tristate "Binary Increase Congestion (BIC) control" |
@@ -574,12 +572,49 @@ config TCP_CONG_VENO | |||
574 | loss packets. | 572 | loss packets. |
575 | See http://www.ntu.edu.sg/home5/ZHOU0022/papers/CPFu03a.pdf | 573 | See http://www.ntu.edu.sg/home5/ZHOU0022/papers/CPFu03a.pdf |
576 | 574 | ||
577 | endmenu | 575 | choice |
576 | prompt "Default TCP congestion control" | ||
577 | default DEFAULT_BIC | ||
578 | help | ||
579 | Select the TCP congestion control that will be used by default | ||
580 | for all connections. | ||
581 | |||
582 | config DEFAULT_BIC | ||
583 | bool "Bic" if TCP_CONG_BIC=y | ||
584 | |||
585 | config DEFAULT_CUBIC | ||
586 | bool "Cubic" if TCP_CONG_CUBIC=y | ||
587 | |||
588 | config DEFAULT_HTCP | ||
589 | bool "Htcp" if TCP_CONG_HTCP=y | ||
590 | |||
591 | config DEFAULT_VEGAS | ||
592 | bool "Vegas" if TCP_CONG_VEGAS=y | ||
593 | |||
594 | config DEFAULT_WESTWOOD | ||
595 | bool "Westwood" if TCP_CONG_WESTWOOD=y | ||
596 | |||
597 | config DEFAULT_RENO | ||
598 | bool "Reno" | ||
599 | |||
600 | endchoice | ||
601 | |||
602 | endif | ||
578 | 603 | ||
579 | config TCP_CONG_BIC | 604 | config TCP_CONG_BIC |
580 | tristate | 605 | tristate |
581 | depends on !TCP_CONG_ADVANCED | 606 | depends on !TCP_CONG_ADVANCED |
582 | default y | 607 | default y |
583 | 608 | ||
609 | config DEFAULT_TCP_CONG | ||
610 | string | ||
611 | default "bic" if DEFAULT_BIC | ||
612 | default "cubic" if DEFAULT_CUBIC | ||
613 | default "htcp" if DEFAULT_HTCP | ||
614 | default "vegas" if DEFAULT_VEGAS | ||
615 | default "westwood" if DEFAULT_WESTWOOD | ||
616 | default "reno" if DEFAULT_RENO | ||
617 | default "bic" | ||
618 | |||
584 | source "net/ipv4/ipvs/Kconfig" | 619 | source "net/ipv4/ipvs/Kconfig" |
585 | 620 | ||
diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c index 19b2071ff319..e82a5be894b5 100644 --- a/net/ipv4/sysctl_net_ipv4.c +++ b/net/ipv4/sysctl_net_ipv4.c | |||
@@ -129,6 +129,12 @@ static int sysctl_tcp_congestion_control(ctl_table *table, int __user *name, | |||
129 | return ret; | 129 | return ret; |
130 | } | 130 | } |
131 | 131 | ||
132 | static int __init tcp_congestion_default(void) | ||
133 | { | ||
134 | return tcp_set_default_congestion_control(CONFIG_DEFAULT_TCP_CONG); | ||
135 | } | ||
136 | |||
137 | late_initcall(tcp_congestion_default); | ||
132 | 138 | ||
133 | ctl_table ipv4_table[] = { | 139 | ctl_table ipv4_table[] = { |
134 | { | 140 | { |
diff --git a/net/ipv4/tcp_cong.c b/net/ipv4/tcp_cong.c index 7ff2e4273a7c..af0aca1e6be6 100644 --- a/net/ipv4/tcp_cong.c +++ b/net/ipv4/tcp_cong.c | |||
@@ -48,7 +48,7 @@ int tcp_register_congestion_control(struct tcp_congestion_ops *ca) | |||
48 | printk(KERN_NOTICE "TCP %s already registered\n", ca->name); | 48 | printk(KERN_NOTICE "TCP %s already registered\n", ca->name); |
49 | ret = -EEXIST; | 49 | ret = -EEXIST; |
50 | } else { | 50 | } else { |
51 | list_add_rcu(&ca->list, &tcp_cong_list); | 51 | list_add_tail_rcu(&ca->list, &tcp_cong_list); |
52 | printk(KERN_INFO "TCP %s registered\n", ca->name); | 52 | printk(KERN_INFO "TCP %s registered\n", ca->name); |
53 | } | 53 | } |
54 | spin_unlock(&tcp_cong_list_lock); | 54 | spin_unlock(&tcp_cong_list_lock); |