svn commit: r196107 - projects/tcp_ffcaia2008_8.x/sys/netinet

Lawrence Stewart lstewart at FreeBSD.org
Tue Aug 11 22:26:11 UTC 2009


Author: lstewart
Date: Tue Aug 11 22:26:10 2009
New Revision: 196107
URL: http://svn.freebsd.org/changeset/base/196107

Log:
  Tweak the accounting math in my previous commit so that it actually calculates
  the correct values. The sack_hole_bytes variable should now be ready to use to
  influence SACK recovery behaviour.
  
  Sponsored by:	FreeBSD Foundation

Modified:
  projects/tcp_ffcaia2008_8.x/sys/netinet/tcp_sack.c

Modified: projects/tcp_ffcaia2008_8.x/sys/netinet/tcp_sack.c
==============================================================================
--- projects/tcp_ffcaia2008_8.x/sys/netinet/tcp_sack.c	Tue Aug 11 22:09:43 2009	(r196106)
+++ projects/tcp_ffcaia2008_8.x/sys/netinet/tcp_sack.c	Tue Aug 11 22:26:10 2009	(r196107)
@@ -352,7 +352,7 @@ tcp_sackhole_remove(struct tcpcb *tp, st
 #endif
 	*/
 	if (TAILQ_EMPTY(&tp->snd_holes) && tp->sack_hole_bytes != 0) {
-		printf("tp->sack_hole_bytes is %d instead of 0", tp->sack_hole_bytes);
+		printf("conn (%p) tp->sack_hole_bytes is %d instead of 0\n", tp, tp->sack_hole_bytes);
 		tp->sack_hole_bytes = 0;
 	}
 }
@@ -524,7 +524,7 @@ tcp_sack_doack(struct tcpcb *tp, struct 
 			/* Data acks at least the end of hole. */
 			if (SEQ_GEQ(sblkp->end, cur->end)) {
 				/* Shrink hole: slide end of hole backward. */
-				tp->sack_hole_bytes -= sblkp->start - cur->end;
+				tp->sack_hole_bytes -= cur->end - sblkp->start;
 				cur->end = sblkp->start;
 				cur->rxmit = SEQ_MIN(cur->rxmit, cur->end);
 			} else {
@@ -552,8 +552,6 @@ tcp_sack_doack(struct tcpcb *tp, struct 
 					 * sblkp->end-sblkp->start
 					 */
 					tp->sack_hole_bytes -=	cur->end -
-								sblkp->end -
-								sblkp->end +
 								sblkp->start;
 					cur->end = sblkp->start;
 					cur->rxmit = SEQ_MIN(cur->rxmit,


More information about the svn-src-projects mailing list