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 MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D29376 Sponsored by: Netflix, Inc.
This commit is contained in:
parent
f9a159da2a
commit
40f41ece76
@ -3179,7 +3179,9 @@ tcp_do_segment(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
|
||||
|
@ -8371,7 +8371,9 @@ bbr_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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user