svn commit: r242148 - user/andre/tcp_workqueue/sys/netinet

Andre Oppermann andre at FreeBSD.org
Fri Oct 26 16:52:56 UTC 2012


Author: andre
Date: Fri Oct 26 16:52:56 2012
New Revision: 242148
URL: http://svn.freebsd.org/changeset/base/242148

Log:
  Revert r242001.  All NICs supporting TSO also support doing DMA
  chains larger than 64K and hacking around it in TCP is not correct.
  
  The correct fix is within the drivers artificially limiting their
  DMA chain length.
  
  Discussed with:	yongari

Modified:
  user/andre/tcp_workqueue/sys/netinet/tcp_output.c

Modified: user/andre/tcp_workqueue/sys/netinet/tcp_output.c
==============================================================================
--- user/andre/tcp_workqueue/sys/netinet/tcp_output.c	Fri Oct 26 16:47:52 2012	(r242147)
+++ user/andre/tcp_workqueue/sys/netinet/tcp_output.c	Fri Oct 26 16:52:56 2012	(r242148)
@@ -772,12 +772,9 @@ send:
 			 * Limit a burst to IP_MAXPACKET minus IP,
 			 * TCP and options length to keep ip->ip_len
 			 * from overflowing.
-			 * Deduct max_linkhdr as well to prevent the
-			 * eventual DMA chain from exceeding IP_MAXPACKET
-			 * (64K) as well.
 			 */
-			if (len > IP_MAXPACKET - (hdrlen + max_linkhdr)) {
-				len = IP_MAXPACKET - (hdrlen + max_linkhdr);
+			if (len > IP_MAXPACKET - hdrlen) {
+				len = IP_MAXPACKET - hdrlen;
 				sendalot = 1;
 			}
 
@@ -808,7 +805,7 @@ send:
 	} else
 		tso = 0;
 
-	KASSERT(len + hdrlen + ipoptlen + max_linkhdr <= IP_MAXPACKET,
+	KASSERT(len + hdrlen + ipoptlen <= IP_MAXPACKET,
 	    ("%s: len > IP_MAXPACKET", __func__));
 
 /*#ifdef DIAGNOSTIC*/


More information about the svn-src-user mailing list