TCP: send full initial window when timestamps are in use

The fastpath in tcp_output tries to send out
full segments, and avoid sending partial segments by
comparing against the static t_maxseg variable.
That value does not consider tcp options like timestamps,
while the initial window calculation is using
the correct dynamic tcp_maxseg() function.

Due to this interaction, the last, full size segment
is considered too short and not sent out immediately.

Reviewed by:	tuexen
MFC after:	2 weeks
Sponsored by:	NetApp, Inc.
Differential Revision:	https://reviews.freebsd.org/D26478
This commit is contained in:
Richard Scheffenegger 2020-09-25 10:38:19 +00:00 committed by Sebastian Huber
parent 43e76bafcd
commit 7b30b9f648
1 changed files with 2 additions and 0 deletions

View File

@ -80,6 +80,8 @@ struct tcphdr {
u_short th_urp; /* urgent pointer */
};
#define PADTCPOLEN(len) ((((len) / 4) + !!((len) % 4)) * 4)
#define TCPOPT_EOL 0
#define TCPOLEN_EOL 1
#define TCPOPT_PAD 0 /* padding after EOL */