svn commit: r220424 - head/sys/dev/mxge

Andrew Gallatin gallatin at FreeBSD.org
Thu Apr 7 13:49:45 UTC 2011


Author: gallatin
Date: Thu Apr  7 13:49:44 2011
New Revision: 220424
URL: http://svn.freebsd.org/changeset/base/220424

Log:
  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
  MFC after:	7 days

Modified:
  head/sys/dev/mxge/mxge_lro.c

Modified: head/sys/dev/mxge/mxge_lro.c
==============================================================================
--- head/sys/dev/mxge/mxge_lro.c	Thu Apr  7 13:14:51 2011	(r220423)
+++ head/sys/dev/mxge/mxge_lro.c	Thu Apr  7 13:49:44 2011	(r220424)
@@ -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);


More information about the svn-src-all mailing list