tcp_bic (was Re: 2.6.12-rc6-mm1 OOPS in tcp_push_one()
From: Valdis . Kletnieks
Date: Thu Jun 09 2005 - 10:25:51 EST
On Wed, 08 Jun 2005 22:58:17 PDT, "David S. Miller" said:
> From: Valdis.Kletnieks@xxxxxx
> Date: Thu, 09 Jun 2005 00:23:32 -0400
>
> > (On a related note, how did tcp_bic get loaded? I requested all the new
> > congestion stuff be built as modules, didn't specifically request any of
> > them to actually be loaded....
>
> It's the default algorithm, so when you open the first TCP
> socket it tries to load it.
Ahh.. I was reading the Kconfig, which says this:
menu "TCP congestion control"
# TCP Reno is builtin (required as fallback)
config TCP_CONG_BIC
tristate "Binary Increase Congestion (BIC) control"
depends on INET
default y
and I built with:
CONFIG_TCP_CONG_BIC=m
CONFIG_TCP_CONG_WESTWOOD=m
CONFIG_TCP_CONG_HTCP=m
CONFIG_TCP_CONG_HSTCP=m
CONFIG_TCP_CONG_HYBLA=m
CONFIG_TCP_CONG_VEGAS=m
CONFIG_TCP_CONG_SCALABLE=m
so what I *expected* was a kernel with Reno built-in, and the others as
modules if I got ambitious and loaded one or another.
How do people feel about this:
--- linux-2.6.12-rc6-mm1/net/ipv4/Kconfig.bic 2005-06-07 12:55:41.000000000 -0400
+++ linux-2.6.12-rc6-mm1/net/ipv4/Kconfig 2005-06-09 11:12:26.000000000 -0400
@@ -425,6 +425,10 @@ config TCP_CONG_BIC
increase provides TCP friendliness.
See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/
+ This is the default TCP congestion control and the kernel will
+ attempt to load it if possible. If it is unable to initialize
+ tcp_bic, the TCP Reno algorithms will be used as a fallback.
+
config TCP_CONG_WESTWOOD
tristate "TCP Westwood+"
select IP_TCPDIAG
(although that *still* doesn't document what's really going on with
the tcp_init_congestion_control() function, and how that sysctl value
interacts with things....
Attachment:
pgp00000.pgp
Description: PGP signature