tcp: allow window scale and timestamps to be toggled individually

Simple change to allow for the individual toggling of
RFC7323 window scaling and timestamp option.

Reviewed By:    	rrs, tuexen, glebius, guest-ccui, #transport
Sponsored by:   	NetApp, Inc.
Differential Revision:	https://reviews.freebsd.org/D36863
This commit is contained in:
Richard Scheffenegger 2022-10-03 19:18:58 +02:00
parent 3a91cecea4
commit 0924ae8f47
2 changed files with 26 additions and 3 deletions

View File

@ -892,7 +892,18 @@ minimum, which gives us an effective minimum of 200ms (similar to
The initial value is used before an RTT measurement has been performed.
.It Va rfc1323
Implement the window scaling and timestamp options of RFC 1323/RFC 7323
(default is true).
(default is 1).
Settings:
.Bl -tag -compact
.It 0
Disable window scaling and timestamp option.
.It 1
Enable window scaling and timestamp option.
.It 2
Enable only window scaling.
.It 3
Enable only timestamp option.
.El
.It Va rfc3042
Enable the Limited Transmit algorithm as described in RFC 3042.
It helps avoid timeouts on lossy links and also when the congestion window

View File

@ -2280,8 +2280,20 @@ tcp_newtcpcb(struct inpcb *inp)
callout_init(&tp->t_timers->tt_2msl, 1);
callout_init(&tp->t_timers->tt_delack, 1);
if (V_tcp_do_rfc1323)
tp->t_flags = (TF_REQ_SCALE|TF_REQ_TSTMP);
switch (V_tcp_do_rfc1323) {
case 0:
break;
default:
case 1:
tp->t_flags = (TF_REQ_SCALE|TF_REQ_TSTMP);
break;
case 2:
tp->t_flags = TF_REQ_SCALE;
break;
case 3:
tp->t_flags = TF_REQ_TSTMP;
break;
}
if (V_tcp_do_sack)
tp->t_flags |= TF_SACK_PERMIT;
TAILQ_INIT(&tp->snd_holes);