r2935 - in trunk/kernel/source/kernel-source-2.6.11-2.6.11/debian/patches: . series

Simon Horman horms@costa.debian.org
Wed, 06 Apr 2005 08:36:55 +0000


Author: horms
Date: 2005-04-06 08:36:55 +0000 (Wed, 06 Apr 2005)
New Revision: 2935

Added:
   trunk/kernel/source/kernel-source-2.6.11-2.6.11/debian/patches/net-ipv4-bic-binary-search.patch
   trunk/kernel/source/kernel-source-2.6.11-2.6.11/debian/patches/series/2.6.11-3
Log:
Fix BIC congestion avoidance algorithm error

Added: trunk/kernel/source/kernel-source-2.6.11-2.6.11/debian/patches/net-ipv4-bic-binary-search.patch
===================================================================
--- trunk/kernel/source/kernel-source-2.6.11-2.6.11/debian/patches/net-ipv4-bic-binary-search.patch	2005-04-06 08:33:42 UTC (rev 2934)
+++ trunk/kernel/source/kernel-source-2.6.11-2.6.11/debian/patches/net-ipv4-bic-binary-search.patch	2005-04-06 08:36:55 UTC (rev 2935)
@@ -0,0 +1,60 @@
+# origin: kraxel@bytesex.org (BitKeeper)
+# cset: 423319b45APysujA6dNnGY0xxK9gJg
+# URL: http://oss.sgi.com/projects/netdev/archive/2005-04/msg00241.html
+# inclusion: proposed for upstream's -stable tree
+# description: [TCP] Fix BIC congestion avoidance algorithm error
+# revision date: Tue,  5 Apr 2005 09:47:59 -0700
+#
+
+#Date: Tue, 5 Apr 2005 09:47:59 -0700
+#From: Greg KH <gregkh@suse.de>
+#To: linux-kernel@vger.kernel.org, stable@kernel.org
+#Cc: davem@davemloft.net, shemminger@osdl.org, netdev@oss.sgi.com
+#Subject: [07/08] [TCP] Fix BIC congestion avoidance algorithm error
+#
+#-stable review patch.  If anyone has any objections, please let us know.
+#
+#------------------
+#
+#Since BIC is the default congestion control algorithm
+#enabled in every 2.6.x kernel out there, fixing errors
+#in it becomes quite critical.
+#
+#A flaw in the loss handling caused it to not perform
+#the binary search regimen of the BIC algorithm
+#properly.
+#
+#The fix below from Stephen Hemminger has been heavily
+#verified.
+#
+#[TCP]: BIC not binary searching correctly
+#
+#While redoing BIC for the split up version, I discovered that the existing
+#2.6.11 code doesn't really do binary search. It ends up being just a slightly
+#modified version of Reno.  See attached graphs to see the effect over simulated
+#1mbit environment.
+#
+#The problem is that BIC is supposed to reset the cwnd to the last loss value
+#rather than ssthresh when loss is detected.  The correct code (from the BIC
+#TCP code for Web100) is in this patch.
+#
+#Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
+#Signed-off-by: David S. Miller <davem@davemloft.net>
+#Signed-off-by: Chris Wright <chrisw@osdl.org>
+#Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+#
+--- 1.92/net/ipv4/tcp_input.c	2005-02-22 10:45:31 -08:00
++++ edited/net/ipv4/tcp_input.c	2005-03-23 10:55:18 -08:00
+@@ -1653,7 +1653,10 @@
+ static void tcp_undo_cwr(struct tcp_sock *tp, int undo)
+ {
+ 	if (tp->prior_ssthresh) {
+-		tp->snd_cwnd = max(tp->snd_cwnd, tp->snd_ssthresh<<1);
++		if (tcp_is_bic(tp))
++			tp->snd_cwnd = max(tp->snd_cwnd, tp->bictcp.last_max_cwnd);
++		else
++			tp->snd_cwnd = max(tp->snd_cwnd, tp->snd_ssthresh<<1);
+ 
+ 		if (undo && tp->prior_ssthresh > tp->snd_ssthresh) {
+ 			tp->snd_ssthresh = tp->prior_ssthresh;
+

Added: trunk/kernel/source/kernel-source-2.6.11-2.6.11/debian/patches/series/2.6.11-3
===================================================================
--- trunk/kernel/source/kernel-source-2.6.11-2.6.11/debian/patches/series/2.6.11-3	2005-04-06 08:33:42 UTC (rev 2934)
+++ trunk/kernel/source/kernel-source-2.6.11-2.6.11/debian/patches/series/2.6.11-3	2005-04-06 08:36:55 UTC (rev 2935)
@@ -0,0 +1 @@
++ net-ipv4-bic-binary-search.patch