svn commit: r347082 - in stable/12/sys/netinet: . tcp_stacks

Michael Tuexen tuexen at FreeBSD.org
Sat May 4 09:11:18 UTC 2019


Author: tuexen
Date: Sat May  4 09:11:17 2019
New Revision: 347082
URL: https://svnweb.freebsd.org/changeset/base/347082

Log:
  MFC r343661:
  When handling SYN-ACK segments in the SYN-RCVD state, set tp->snd_wnd
  consistently.
  
  This inconsistency was observed when working on the bug reported in
  PR 235256, although it does not fix the reported issue. The fix for
  the PR will be a separate commit.
  
  PR:			235256
  Reviewed by:		rrs@, Richard Scheffenegger
  Sponsored by:		Netflix, Inc.
  Differential Revision:	https://reviews.freebsd.org/D19033

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

Modified: stable/12/sys/netinet/tcp_input.c
==============================================================================
--- stable/12/sys/netinet/tcp_input.c	Sat May  4 09:07:53 2019	(r347081)
+++ stable/12/sys/netinet/tcp_input.c	Sat May  4 09:11:17 2019	(r347082)
@@ -2402,8 +2402,8 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, stru
 		if ((tp->t_flags & (TF_RCVD_SCALE|TF_REQ_SCALE)) ==
 			(TF_RCVD_SCALE|TF_REQ_SCALE)) {
 			tp->rcv_scale = tp->request_r_scale;
-			tp->snd_wnd = tiwin;
 		}
+		tp->snd_wnd = tiwin;
 		/*
 		 * Make transitions:
 		 *      SYN-RECEIVED  -> ESTABLISHED

Modified: stable/12/sys/netinet/tcp_stacks/rack.c
==============================================================================
--- stable/12/sys/netinet/tcp_stacks/rack.c	Sat May  4 09:07:53 2019	(r347081)
+++ stable/12/sys/netinet/tcp_stacks/rack.c	Sat May  4 09:11:17 2019	(r347082)
@@ -5445,6 +5445,7 @@ rack_do_syn_recv(struct mbuf *m, struct tcphdr *th, st
 		tp->ts_recent_age = tcp_ts_getticks();
 		tp->ts_recent = to->to_tsval;
 	}
+	tp->snd_wnd = tiwin;
 	/*
 	 * If the ACK bit is off:  if in SYN-RECEIVED state or SENDSYN flag
 	 * is on (half-synchronized state), then queue data for later
@@ -5452,7 +5453,6 @@ rack_do_syn_recv(struct mbuf *m, struct tcphdr *th, st
 	 */
 	if ((thflags & TH_ACK) == 0) {
 		if (IS_FASTOPEN(tp->t_flags)) {
-			tp->snd_wnd = tiwin;
 			cc_conn_init(tp);
 		}
 		return (rack_process_data(m, th, so, tp, drop_hdrlen, tlen,
@@ -5464,7 +5464,6 @@ rack_do_syn_recv(struct mbuf *m, struct tcphdr *th, st
 	if ((tp->t_flags & (TF_RCVD_SCALE | TF_REQ_SCALE)) ==
 	    (TF_RCVD_SCALE | TF_REQ_SCALE)) {
 		tp->rcv_scale = tp->request_r_scale;
-		tp->snd_wnd = tiwin;
 	}
 	/*
 	 * Make transitions: SYN-RECEIVED  -> ESTABLISHED SYN-RECEIVED* ->


More information about the svn-src-all mailing list