From patchwork Mon Aug 16 05:19:36 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gerrit Renker X-Patchwork-Id: 61781 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 54969B70A9 for ; Mon, 16 Aug 2010 15:23:17 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752439Ab0HPFXM (ORCPT ); Mon, 16 Aug 2010 01:23:12 -0400 Received: from dee.erg.abdn.ac.uk ([139.133.204.82]:59177 "EHLO erg.abdn.ac.uk" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752408Ab0HPFXL (ORCPT ); Mon, 16 Aug 2010 01:23:11 -0400 Received: from laptev.erg.abdn.ac.uk (Debian-exim@ra-gerrit.erg.abdn.ac.uk [139.133.204.38]) by erg.abdn.ac.uk (8.13.4/8.13.4) with ESMTP id o7G5JakD002130 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT); Mon, 16 Aug 2010 06:19:36 +0100 (BST) Received: from gerrit by laptev.erg.abdn.ac.uk with local (Exim 4.69) (envelope-from ) id 1Oks6i-00012q-A1; Mon, 16 Aug 2010 07:19:36 +0200 Date: Mon, 16 Aug 2010 07:19:36 +0200 From: Gerrit Renker To: Leandro , Ivo Calado , dccp@vger.kernel.org Cc: netdev@vger.kernel.org Subject: dccp test-tree [Patch 1/1] ccid-3: use per-route min-RTO and/or TCP default Message-ID: <20100816051936.GD3571@gerrit.erg.abdn.ac.uk> Mail-Followup-To: Gerrit Renker , Leandro , Ivo Calado , dccp@vger.kernel.org, netdev@vger.kernel.org MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-ERG-MailScanner: Found to be clean X-ERG-MailScanner-From: gerrit@erg.abdn.ac.uk X-Spam-Status: No Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch relates to the similar one submitted last week for CCID-2. It replaces the hardcoded (Kconfig) value of the minimum RTO value with a reconfigurable, per-route value which falls back to the TCP minimum RTO value. Leando, Ivo, can you please have a look and indicate whether you are ok with this? If yes I would like to also update the CCID-4 tree to make it consistent with the test tree - for this reason the test tree has not yet been updated. >>>>>>>>>>>>>>>>>>>>>>> Patch <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< dccp ccid-3: use per-route RTO or TCP RTO as fallback This makes the TCP (per-route) RTO value also available to CCID-3, hence it is now possible to influence this value at runtime rather than, as before, via Kconfig. The same effect as the default Kconfig option of 100ms is now achieved by > ip route replace to unicast 192.168.0.0/24 rto_min 100j dev eth0 (assuming HZ=1000). Signed-off-by: Gerrit Renker Acked-by: Ivo Calado for ccid4 subtree --- net/dccp/ccids/Kconfig | 31 ------------------------------- net/dccp/ccids/ccid3.c | 9 ++++----- 2 files changed, 4 insertions(+), 36 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html --- a/net/dccp/ccids/Kconfig +++ b/net/dccp/ccids/Kconfig @@ -47,37 +47,6 @@ config IP_DCCP_CCID3_DEBUG If in doubt, say N. -config IP_DCCP_CCID3_RTO - int "Use higher bound for nofeedback timer" - default 100 - depends on IP_DCCP_CCID3 && EXPERIMENTAL - ---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 3448, 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 3448. 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. - config IP_DCCP_TFRC_LIB def_bool y if IP_DCCP_CCID3 --- a/net/dccp/ccids/ccid3.c +++ b/net/dccp/ccids/ccid3.c @@ -461,12 +461,11 @@ 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_CCID3_RTO * - (USEC_PER_SEC / 1000))); + hc->tx_t_rto = max(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)