--- a/net/dccp/ccids/Kconfig +++ b/net/dccp/ccids/Kconfig @@ -65,37 +65,6 @@ config IP_DCCP_CCID3_MEASURE_S_AS_MAX ---help--- An experimental method based on tracking the maximum packet size. endchoice - -config IP_DCCP_CCID3_RTO - int "Use higher bound for nofeedback timer" - default 100 - depends on IP_DCCP_CCID3 - ---help--- - Use higher lower bound for nofeedback timer expiration. - - The TFRC nofeedback timer normally expires after the maximum of 4 - RTTs and twice the current send interval (RFC 5348, 4.3). On LANs - with a small RTT this can mean a high processing load and reduced - performance, since then the nofeedback timer is triggered very - frequently. - - This option enables to set a higher lower bound for the nofeedback - value. Values in units of milliseconds can be set here. - - A value of 0 disables this feature by enforcing the value specified - in RFC 5348. The following values have been suggested as bounds for - experimental use: - * 16-20ms to match the typical multimedia inter-frame interval - * 100ms as a reasonable compromise [default] - * 1000ms corresponds to the lower TCP RTO bound (RFC 2988, 2.4) - - The default of 100ms is a compromise between a large value for - efficient DCCP implementations, and a small value to avoid disrupting - the network in times of congestion. - - The purpose of the nofeedback timer is to slow DCCP down when there - is serious network congestion: experimenting with larger values should - therefore not be performed on WANs. endif # IP_DCCP_CCID3 config IP_DCCP_CCID4 @@ -114,8 +83,7 @@ config IP_DCCP_CCID4 sending rate, possibly with Explicit Congestion Notification (ECN), while minimizing abrupt rate changes. - CCID-4 is based an (expired) Internet-Draft which can be found at: - http://tools.ietf.org/html/draft-ietf-dccp-ccid4 + CCID-4 is specified in RFC 5622. If in doubt, say N. @@ -150,13 +118,6 @@ config IP_DCCP_CCID4_MEASURE_S_AS_MAX ---help--- An experimental method based on tracking the maximum packet size. endchoice - -config IP_DCCP_CCID4_RTO - int "Use higher bound for nofeedback timer" - default 100 - ---help--- - This item does for CCID-3 as DCCP_CCID3_RTO does for CCID-3, please - see the help text there. endif # IP_DCCP_CCID4 config IP_DCCP_TFRC_LIB --- a/net/dccp/ccids/ccid4.c +++ b/net/dccp/ccids/ccid4.c @@ -445,12 +445,12 @@ done_computing_x: /* * Update timeout interval for the nofeedback timer. - * We use a configuration option to increase the lower bound. - * This can help avoid triggering the nofeedback timer too - * often ('spinning') on LANs with small RTTs. + * We use the current (per-route) value of the TCP RTO as lower bound + * to slow down rate-halving on networks with small RTTs (loopback, + * running DCCP in a virtual machine, Gbit ethernet, etc). */ - hc->tx_t_rto = max_t(u32, 4 * hc->tx_rtt, (CONFIG_IP_DCCP_CCID4_RTO * - (USEC_PER_SEC / 1000))); + hc->tx_t_rto = max_t(u32, 4 * hc->tx_rtt, + USEC_PER_SEC/HZ * tcp_rto_min(sk)); /* * Schedule no feedback timer to expire in * max(t_RTO, 2 * s/X) = max(t_RTO, 2 * t_ipi)