[TCP]: default congestion control menu
[safe/jmp/linux-2.6] / net / ipv4 / Kconfig
index 3e63123..1bbc368 100644 (file)
@@ -3,7 +3,6 @@
 #
 config IP_MULTICAST
        bool "IP: multicasting"
-       depends on INET
        help
          This is code for addressing several networked computers at once,
          enlarging your kernel by about 2 KB. You need multicasting if you
@@ -17,7 +16,6 @@ config IP_MULTICAST
 
 config IP_ADVANCED_ROUTER
        bool "IP: advanced router"
-       depends on INET
        ---help---
          If you intend to run your Linux box mostly as a router, i.e. as a
          computer that forwards and redistributes network packets, say Y; you
@@ -56,9 +54,9 @@ config IP_ADVANCED_ROUTER
 choice 
        prompt "Choose IP: FIB lookup algorithm (choose FIB_HASH if unsure)"
        depends on IP_ADVANCED_ROUTER
-       default IP_FIB_HASH
+       default ASK_IP_FIB_HASH
 
-config IP_FIB_HASH
+config ASK_IP_FIB_HASH
        bool "FIB_HASH"
        ---help---
        Current FIB is very proven and good enough for most users.
@@ -84,16 +82,13 @@ config IP_FIB_TRIE
        
 endchoice
 
-# If the user does not enable advanced routing, he gets the safe
-# default of the fib-hash algorithm.
 config IP_FIB_HASH
-       bool
-       depends on !IP_ADVANCED_ROUTER
-       default y
+       def_bool ASK_IP_FIB_HASH || !IP_ADVANCED_ROUTER
 
 config IP_MULTIPLE_TABLES
        bool "IP: policy routing"
        depends on IP_ADVANCED_ROUTER
+       select FIB_RULES
        ---help---
          Normally, a router decides what to do with a received packet based
          solely on the packet's final destination address. If you say Y here,
@@ -130,7 +125,7 @@ config IP_ROUTE_MULTIPATH
 
 config IP_ROUTE_MULTIPATH_CACHED
        bool "IP: equal cost multipath with caching support (EXPERIMENTAL)"
-       depends on: IP_ROUTE_MULTIPATH
+       depends on IP_ROUTE_MULTIPATH
        help
          Normally, equal cost multipath routing is not supported by the
          routing cache. If you say Y here, alternative routes are cached
@@ -183,7 +178,6 @@ config IP_ROUTE_VERBOSE
 
 config IP_PNP
        bool "IP: kernel level autoconfiguration"
-       depends on INET
        help
          This enables automatic configuration of IP addresses of devices and
          of the routing table during kernel boot, based on either information
@@ -242,7 +236,6 @@ config IP_PNP_RARP
 #   bool '    IP: ARP support' CONFIG_IP_PNP_ARP               
 config NET_IPIP
        tristate "IP: tunneling"
-       depends on INET
        select INET_TUNNEL
        ---help---
          Tunneling means encapsulating data of one protocol type within
@@ -260,8 +253,6 @@ config NET_IPIP
 
 config NET_IPGRE
        tristate "IP: GRE tunnels over IP"
-       depends on INET
-       select XFRM
        help
          Tunneling means encapsulating data of one protocol type within
          another protocol and sending it over a channel that understands the
@@ -319,7 +310,7 @@ config IP_PIMSM_V2
 
 config ARPD
        bool "IP: ARP daemon support (EXPERIMENTAL)"
-       depends on INET && EXPERIMENTAL
+       depends on EXPERIMENTAL
        ---help---
          Normally, the kernel maintains an internal cache which maps IP
          addresses to hardware addresses on the local network, so that
@@ -344,7 +335,6 @@ config ARPD
 
 config SYN_COOKIES
        bool "IP: TCP syncookie support (disabled per default)"
-       depends on INET
        ---help---
          Normal TCP/IP networking is open to an attack known as "SYN
          flooding". This denial-of-service attack prevents legitimate remote
@@ -381,7 +371,6 @@ config SYN_COOKIES
 
 config INET_AH
        tristate "IP: AH transformation"
-       depends on INET
        select XFRM
        select CRYPTO
        select CRYPTO_HMAC
@@ -394,11 +383,11 @@ config INET_AH
 
 config INET_ESP
        tristate "IP: ESP transformation"
-       depends on INET
        select XFRM
        select CRYPTO
        select CRYPTO_HMAC
        select CRYPTO_MD5
+       select CRYPTO_CBC
        select CRYPTO_SHA1
        select CRYPTO_DES
        ---help---
@@ -408,9 +397,8 @@ config INET_ESP
 
 config INET_IPCOMP
        tristate "IP: IPComp transformation"
-       depends on INET
        select XFRM
-       select INET_TUNNEL
+       select INET_XFRM_TUNNEL
        select CRYPTO
        select CRYPTO_DEFLATE
        ---help---
@@ -419,35 +407,49 @@ config INET_IPCOMP
          
          If unsure, say Y.
 
+config INET_XFRM_TUNNEL
+       tristate
+       select INET_TUNNEL
+       default n
+
 config INET_TUNNEL
-       tristate "IP: tunnel transformation"
-       depends on INET
+       tristate
+       default n
+
+config INET_XFRM_MODE_TRANSPORT
+       tristate "IP: IPsec transport mode"
+       default y
        select XFRM
        ---help---
-         Support for generic IP tunnel transformation, which is required by
-         the IP tunneling module as well as tunnel mode IPComp.
-         
+         Support for IPsec transport mode.
+
+         If unsure, say Y.
+
+config INET_XFRM_MODE_TUNNEL
+       tristate "IP: IPsec tunnel mode"
+       default y
+       select XFRM
+       ---help---
+         Support for IPsec tunnel mode.
+
          If unsure, say Y.
 
-config IP_TCPDIAG
-       tristate "IP: TCP socket monitoring interface"
-       depends on INET
+config INET_DIAG
+       tristate "INET: socket monitoring interface"
        default y
        ---help---
-         Support for TCP socket monitoring interface used by native Linux
-         tools such as ss. ss is included in iproute2, currently downloadable
-         at <http://developer.osdl.org/dev/iproute2>. If you want IPv6 support
-         and have selected IPv6 as a module, you need to build this as a
-         module too.
+         Support for INET (TCP, DCCP, etc) socket monitoring interface used by
+         native Linux tools such as ss. ss is included in iproute2, currently
+         downloadable at <http://developer.osdl.org/dev/iproute2>. 
          
          If unsure, say Y.
 
-config IP_TCPDIAG_IPV6
-       def_bool (IP_TCPDIAG=y && IPV6=y) || (IP_TCPDIAG=m && IPV6)
+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"
-       depends on INET
        ---help---
          Support for selection of various TCP congestion control
          modules.
@@ -457,13 +459,10 @@ 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"
-       depends on INET
        default y
        ---help---
        BIC-TCP is a sender-side only change that ensures a linear RTT
@@ -476,9 +475,16 @@ config TCP_CONG_BIC
        increase provides TCP friendliness.
        See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/
 
+config TCP_CONG_CUBIC
+       tristate "CUBIC TCP"
+       default m
+       ---help---
+       This is version 2.0 of BIC-TCP which uses a cubic growth function
+       among other techniques.
+       See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/cubic-paper.pdf
+
 config TCP_CONG_WESTWOOD
        tristate "TCP Westwood+"
-       depends on INET
        default m
        ---help---
        TCP Westwood+ is a sender-side only modification of the TCP Reno
@@ -493,7 +499,6 @@ config TCP_CONG_WESTWOOD
 
 config TCP_CONG_HTCP
         tristate "H-TCP"
-       depends on INET
         default m
        ---help---
        H-TCP is a send-side only modifications of the TCP Reno
@@ -505,7 +510,7 @@ config TCP_CONG_HTCP
 
 config TCP_CONG_HSTCP
        tristate "High Speed TCP"
-       depends on INET && EXPERIMENTAL
+       depends on EXPERIMENTAL
        default n
        ---help---
        Sally Floyd's High Speed TCP (RFC 3649) congestion control.
@@ -516,7 +521,7 @@ config TCP_CONG_HSTCP
 
 config TCP_CONG_HYBLA
        tristate "TCP-Hybla congestion control algorithm"
-       depends on INET && EXPERIMENTAL
+       depends on EXPERIMENTAL
        default n
        ---help---
        TCP-Hybla is a sender-side only change that eliminates penalization of
@@ -526,7 +531,7 @@ config TCP_CONG_HYBLA
 
 config TCP_CONG_VEGAS
        tristate "TCP Vegas"
-       depends on INET && EXPERIMENTAL
+       depends on EXPERIMENTAL
        default n
        ---help---
        TCP Vegas is a sender-side only change to TCP that anticipates
@@ -537,7 +542,7 @@ config TCP_CONG_VEGAS
 
 config TCP_CONG_SCALABLE
        tristate "Scalable TCP"
-       depends on INET && EXPERIMENTAL
+       depends on EXPERIMENTAL
        default n
        ---help---
        Scalable TCP is a sender-side only change to TCP which uses a
@@ -545,12 +550,71 @@ config TCP_CONG_SCALABLE
        properties, though is known to have fairness issues.
        See http://www-lce.eng.cam.ac.uk/~ctk21/scalable/
 
-endmenu
+config TCP_CONG_LP
+       tristate "TCP Low Priority"
+       depends on EXPERIMENTAL
+       default n
+       ---help---
+       TCP Low Priority (TCP-LP), a distributed algorithm whose goal is
+       to utiliza only the excess network bandwidth as compared to the
+       ``fair share`` of bandwidth as targeted by TCP.
+       See http://www-ece.rice.edu/networks/TCP-LP/
+
+config TCP_CONG_VENO
+       tristate "TCP Veno"
+       depends on EXPERIMENTAL
+       default n
+       ---help---
+       TCP Veno is a sender-side only enhancement of TCP to obtain better
+       throughput over wireless networks. TCP Veno makes use of state
+       distinguishing to circumvent the difficult judgment of the packet loss
+       type. TCP Veno cuts down less congestion window in response to random
+       loss packets.
+       See http://www.ntu.edu.sg/home5/ZHOU0022/papers/CPFu03a.pdf
+
+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"