Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Apr 2011 21:20:26 +0000 (UTC)
From:      Jack F Vogel <jfv@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r220428 - head/sys/netinet
Message-ID:  <201104072120.p37LKQfi052227@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jfv
Date: Thu Apr  7 21:20:26 2011
New Revision: 220428
URL: http://svn.freebsd.org/changeset/base/220428

Log:
  Port of the LRO fix from mxge driver to the generic
  LRO code. Thanks to Andrew Gallatin for the change.
  
  MFC after:  7 days

Modified:
  head/sys/netinet/tcp_lro.c

Modified: head/sys/netinet/tcp_lro.c
==============================================================================
--- head/sys/netinet/tcp_lro.c	Thu Apr  7 20:15:36 2011	(r220427)
+++ head/sys/netinet/tcp_lro.c	Thu Apr  7 21:20:26 2011	(r220428)
@@ -279,8 +279,10 @@ tcp_lro_rx(struct lro_ctrl *cntl, struct
 		    lro->dest_ip == ip->ip_dst.s_addr) {
 			/* Try to append it */
 
-			if (__predict_false(seq != lro->next_seq)) {
-				/* out of order packet */
+			if (__predict_false(seq != lro->next_seq ||
+				    (tcp_data_len == 0 &&
+				    lro->ack_seq == tcp->th_ack))) {
+				/* out of order packet or dup ack */
 				SLIST_REMOVE(&cntl->lro_active, lro,
 					     lro_entry, next);
 				tcp_lro_flush(cntl, lro);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201104072120.p37LKQfi052227>