diff --git a/share/man/man4/tcp.4 b/share/man/man4/tcp.4 index 0b38fd63e165..e6f4ced0c1cf 100644 --- a/share/man/man4/tcp.4 +++ b/share/man/man4/tcp.4 @@ -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 diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index f9dc57e1df66..9b3525815f73 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -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);