svn commit: r365596 - stable/12/sys/netinet/tcp_stacks

Michael Tuexen tuexen at FreeBSD.org
Thu Sep 10 17:31:35 UTC 2020


Author: tuexen
Date: Thu Sep 10 17:31:34 2020
New Revision: 365596
URL: https://svnweb.freebsd.org/changeset/base/365596

Log:
  MFC r351782:
  Fix two TCP RACK issues:
  * Convert the TCP delayed ACK timer from ms to ticks as required.
    This fixes the timer on platforms with hz != 1000.
  * Don't delay acknowledgements which report duplicate data using
    DSACKs.

Modified:
  stable/12/sys/netinet/tcp_stacks/rack.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/netinet/tcp_stacks/rack.c
==============================================================================
--- stable/12/sys/netinet/tcp_stacks/rack.c	Thu Sep 10 17:29:20 2020	(r365595)
+++ stable/12/sys/netinet/tcp_stacks/rack.c	Thu Sep 10 17:31:34 2020	(r365596)
@@ -1802,6 +1802,11 @@ rack_drop_checks(struct tcpopt *to, struct mbuf *m, st
 			 * will clear the DSACK block again
 			 */
 			tp->t_flags |= TF_ACKNOW;
+			/*
+			 * ACK now, as the next in-sequence segment
+			 * will clear the DSACK block again
+			 */
+			tp->t_flags |= TF_ACKNOW;
 		}
 		*drop_hdrlen += todrop;	/* drop from the top afterwards */
 		th->th_seq += todrop;
@@ -2350,7 +2355,7 @@ rack_start_hpts_timer(struct tcp_rack *rack, struct tc
 	}
 	hpts_timeout = rack_timer_start(tp, rack, cts);
 	if (tp->t_flags & TF_DELACK) {
-		delayed_ack = tcp_delacktime;
+		delayed_ack = TICKS_2_MSEC(tcp_delacktime);
 		rack->r_ctl.rc_hpts_flags |= PACE_TMR_DELACK;
 	}
 	if (delayed_ack && ((hpts_timeout == 0) ||


More information about the svn-src-stable-12 mailing list