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