mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-11-22 03:04:34 +01:00
tcp: fix the initial CWND when a SYN retransmission happened
According to RFC 3390 the CWND should be set to one MSS if the SYN or SYN-ACK has been retransmitted. This is handled in the code by setting CWND to 1 and cc_conn_init() translates this to MSS. Unfortunately, cc_cong_signal() was overwriting the special value of 1 in case of a lost SYN, and therefore the initial CWND was not as it was supposed to be. Fix this by not overwriting the special value of 1. Reviewed by: cc, rscheff MFC after: 3 days Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D47439
This commit is contained in:
parent
55c854cf0c
commit
625835c8b5
@ -810,7 +810,9 @@ tcp_timer_rexmt(struct tcpcb *tp)
|
|||||||
*/
|
*/
|
||||||
tp->t_rtttime = 0;
|
tp->t_rtttime = 0;
|
||||||
|
|
||||||
cc_cong_signal(tp, NULL, CC_RTO);
|
/* Do not overwrite the snd_cwnd on SYN retransmissions. */
|
||||||
|
if (tp->t_state != TCPS_SYN_SENT)
|
||||||
|
cc_cong_signal(tp, NULL, CC_RTO);
|
||||||
NET_EPOCH_ENTER(et);
|
NET_EPOCH_ENTER(et);
|
||||||
rv = tcp_output_locked(tp);
|
rv = tcp_output_locked(tp);
|
||||||
NET_EPOCH_EXIT(et);
|
NET_EPOCH_EXIT(et);
|
||||||
|
Loading…
Reference in New Issue
Block a user