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); |
