Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Sep 2020 16:59:54 +0000 (UTC)
From:      Michael Tuexen <tuexen@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r365589 - in stable/12/sys/netinet: . tcp_stacks
Message-ID:  <202009101659.08AGxs0x005318@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: tuexen
Date: Thu Sep 10 16:59:54 2020
New Revision: 365589
URL: https://svnweb.freebsd.org/changeset/base/365589

Log:
  MFC r357100:
  
  The server side of TCP fast open relies on the delayed ACK timer to allow
  including user data in the SYN-ACK. When DSACK support was added in
  r347382, an immediate ACK was sent even for the received SYN with
  user data. This patch fixes that and allows again to send user data with
  the SYN-ACK.

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

Modified: stable/12/sys/netinet/tcp_input.c
==============================================================================
--- stable/12/sys/netinet/tcp_input.c	Thu Sep 10 16:47:12 2020	(r365588)
+++ stable/12/sys/netinet/tcp_input.c	Thu Sep 10 16:59:54 2020	(r365589)
@@ -2299,7 +2299,7 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, stru
 		/*
 		 * DSACK - add SACK block for dropped range
 		 */
-		if (tp->t_flags & TF_SACK_PERMIT) {
+		if ((todrop > 0) && (tp->t_flags & TF_SACK_PERMIT)) {
 			tcp_update_sack_list(tp, th->th_seq,
 			    th->th_seq + todrop);
 			/*

Modified: stable/12/sys/netinet/tcp_stacks/rack_bbr_common.c
==============================================================================
--- stable/12/sys/netinet/tcp_stacks/rack_bbr_common.c	Thu Sep 10 16:47:12 2020	(r365588)
+++ stable/12/sys/netinet/tcp_stacks/rack_bbr_common.c	Thu Sep 10 16:59:54 2020	(r365589)
@@ -495,7 +495,7 @@ ctf_drop_checks(struct tcpopt *to, struct mbuf *m, str
 		/*
 		 * DSACK - add SACK block for dropped range
 		 */
-		if (tp->t_flags & TF_SACK_PERMIT) {
+		if ((todrop > 0) && (tp->t_flags & TF_SACK_PERMIT)) {
 			tcp_update_sack_list(tp, th->th_seq, th->th_seq + tlen);
 			/*
 			 * ACK now, as the next in-sequence segment



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