dccp ccid-3: Tidy up CCID-Kconfig dependencies
[pandora-kernel.git] / net / dccp / ccids / Kconfig
1 menu "DCCP CCIDs Configuration (EXPERIMENTAL)"
2
3 config IP_DCCP_CCID2
4         tristate "CCID2 (TCP-Like)"
5         def_tristate IP_DCCP
6         ---help---
7           CCID 2, TCP-like Congestion Control, denotes Additive Increase,
8           Multiplicative Decrease (AIMD) congestion control with behavior
9           modelled directly on TCP, including congestion window, slow start,
10           timeouts, and so forth [RFC 2581].  CCID 2 achieves maximum
11           bandwidth over the long term, consistent with the use of end-to-end
12           congestion control, but halves its congestion window in response to
13           each congestion event.  This leads to the abrupt rate changes
14           typical of TCP.  Applications should use CCID 2 if they prefer
15           maximum bandwidth utilization to steadiness of rate.  This is often
16           the case for applications that are not playing their data directly
17           to the user.  For example, a hypothetical application that
18           transferred files over DCCP, using application-level retransmissions
19           for lost packets, would prefer CCID 2 to CCID 3.  On-line games may
20           also prefer CCID 2.  See RFC 4341 for further details.
21
22           CCID2 is the default CCID used by DCCP.
23
24 config IP_DCCP_CCID2_DEBUG
25           bool "CCID2 debugging messages"
26           depends on IP_DCCP_CCID2
27           ---help---
28             Enable CCID2-specific debugging messages.
29
30             When compiling CCID2 as a module, this debugging output can
31             additionally be toggled by setting the ccid2_debug module
32             parameter to 0 or 1.
33
34             If in doubt, say N.
35
36 config IP_DCCP_CCID3
37         tristate "CCID3 (TCP-Friendly)"
38         def_tristate IP_DCCP
39         select IP_DCCP_TFRC_LIB
40         ---help---
41           CCID 3 denotes TCP-Friendly Rate Control (TFRC), an equation-based
42           rate-controlled congestion control mechanism.  TFRC is designed to
43           be reasonably fair when competing for bandwidth with TCP-like flows,
44           where a flow is "reasonably fair" if its sending rate is generally
45           within a factor of two of the sending rate of a TCP flow under the
46           same conditions.  However, TFRC has a much lower variation of
47           throughput over time compared with TCP, which makes CCID 3 more
48           suitable than CCID 2 for applications such streaming media where a
49           relatively smooth sending rate is of importance.
50
51           CCID 3 is further described in RFC 4342,
52           http://www.ietf.org/rfc/rfc4342.txt
53
54           The TFRC congestion control algorithms were initially described in
55           RFC 3448.
56
57           This text was extracted from RFC 4340 (sec. 10.2),
58           http://www.ietf.org/rfc/rfc4340.txt
59           
60           To compile this CCID as a module, choose M here: the module will be
61           called dccp_ccid3.
62
63           If in doubt, say M.
64
65 if IP_DCCP_CCID3
66 config IP_DCCP_CCID3_DEBUG
67           bool "CCID3 debugging messages"
68           ---help---
69             Enable CCID3-specific debugging messages.
70
71             When compiling CCID3 as a module, this debugging output can
72             additionally be toggled by setting the ccid3_debug module
73             parameter to 0 or 1.
74
75             If in doubt, say N.
76
77 config IP_DCCP_CCID3_RTO
78           int "Use higher bound for nofeedback timer"
79           default 100
80           ---help---
81             Use higher lower bound for nofeedback timer expiration.
82
83             The TFRC nofeedback timer normally expires after the maximum of 4
84             RTTs and twice the current send interval (RFC 3448, 4.3). On LANs
85             with a small RTT this can mean a high processing load and reduced
86             performance, since then the nofeedback timer is triggered very
87             frequently.
88
89             This option enables to set a higher lower bound for the nofeedback
90             value. Values in units of milliseconds can be set here.
91
92             A value of 0 disables this feature by enforcing the value specified
93             in RFC 3448. The following values have been suggested as bounds for
94             experimental use:
95                 * 16-20ms to match the typical multimedia inter-frame interval
96                 * 100ms as a reasonable compromise [default]
97                 * 1000ms corresponds to the lower TCP RTO bound (RFC 2988, 2.4)
98
99             The default of 100ms is a compromise between a large value for
100             efficient DCCP implementations, and a small value to avoid disrupting
101             the network in times of congestion.
102
103             The purpose of the nofeedback timer is to slow DCCP down when there
104             is serious network congestion: experimenting with larger values should
105             therefore not be performed on WANs.
106 endif   # IP_DCCP_CCID3
107
108 config IP_DCCP_TFRC_LIB
109         tristate
110         default n
111
112 config IP_DCCP_TFRC_DEBUG
113         bool
114         depends on IP_DCCP_TFRC_LIB
115         default y if IP_DCCP_CCID3_DEBUG
116
117 endmenu