diff options
author | Michael Tuexen <tuexen@FreeBSD.org> | 2021-03-22 14:58:49 +0000 |
---|---|---|
committer | Michael Tuexen <tuexen@FreeBSD.org> | 2021-06-02 21:20:26 +0000 |
commit | 15077bc4b91fc9c98eb5cd743d8386de2d3c1336 (patch) | |
tree | 68a104e72263de8919e29d92aa7ce5ce17016c31 /sys/netinet/tcp_stacks/rack.c | |
parent | 7a9c6cbae91307b152f45a3d38c9a3f895c53f66 (diff) | |
download | src-15077bc4b91fc9c98eb5cd743d8386de2d3c1336.tar.gz src-15077bc4b91fc9c98eb5cd743d8386de2d3c1336.zip |
tcp: improve handling of SYN segments in SYN-SENT state
Ensure that the stack does not generate a DSACK block for user
data received on a SYN segment in SYN-SENT state.
Reviewed by: rscheff
Differential Revision: https://reviews.freebsd.org/D29376
Sponsored by: Netflix, Inc.
(cherry picked from commit 40f41ece765dc0b0907ca90796a1af4f4f89b2a0)
Diffstat (limited to 'sys/netinet/tcp_stacks/rack.c')
-rw-r--r-- | sys/netinet/tcp_stacks/rack.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index 4a883ee32c79..0ee73a95a6d7 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -8683,7 +8683,9 @@ rack_process_data(struct mbuf *m, struct tcphdr *th, struct socket *so, thflags = tcp_reass(tp, th, &temp, &tlen, m); tp->t_flags |= TF_ACKNOW; } - if ((tp->t_flags & TF_SACK_PERMIT) && (save_tlen > 0)) { + if ((tp->t_flags & TF_SACK_PERMIT) && + (save_tlen > 0) && + TCPS_HAVEESTABLISHED(tp->t_state)) { if ((tlen == 0) && (SEQ_LT(save_start, save_rnxt))) { /* * DSACK actually handled in the fastpath |