Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Apr 2011 14:55:34 +0000 (UTC)
From:      Andrew Gallatin <gallatin@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   svn commit: r221171 - stable/8/sys/dev/mxge
Message-ID:  <201104281455.p3SEtY7x028027@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gallatin
Date: Thu Apr 28 14:55:34 2011
New Revision: 221171
URL: http://svn.freebsd.org/changeset/base/221171

Log:
  MFC r220424:
    Fix a bug in mxge's LRO which can cause dup acks to
    get aggregated & hence prevent TCP from entering
    fast retransmit.
  
    Pointed out by: jeff
    Reviewed by: gnn

Modified:
  stable/8/sys/dev/mxge/mxge_lro.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/mxge/mxge_lro.c
==============================================================================
--- stable/8/sys/dev/mxge/mxge_lro.c	Thu Apr 28 14:43:38 2011	(r221170)
+++ stable/8/sys/dev/mxge/mxge_lro.c	Thu Apr 28 14:55:34 2011	(r221171)
@@ -237,8 +237,10 @@ mxge_lro_rx(struct mxge_slice_state *ss,
 		    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(&ss->lro_active, lro,
 					     lro_entry, next);
 				mxge_lro_flush(ss, lro);



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