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 MFC after: 3 days Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D19033
This commit is contained in:
parent
547392731f
commit
116ef4d6e7
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=343661
@ -2385,8 +2385,8 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
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
|
||||
|
@ -5433,6 +5433,7 @@ rack_do_syn_recv(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
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
|
||||
@ -5440,7 +5441,6 @@ rack_do_syn_recv(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
*/
|
||||
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,
|
||||
@ -5452,7 +5452,6 @@ rack_do_syn_recv(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
||||
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* ->
|
||||
|
Loading…
Reference in New Issue
Block a user