From: Richard Scheffenegger <rsch...@freebsd.org>

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
---
 newlib/libc/sys/rtems/include/netinet/tcp.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/newlib/libc/sys/rtems/include/netinet/tcp.h 
b/newlib/libc/sys/rtems/include/netinet/tcp.h
index 0a5226836..faf142959 100644
--- a/newlib/libc/sys/rtems/include/netinet/tcp.h
+++ b/newlib/libc/sys/rtems/include/netinet/tcp.h
@@ -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 */
-- 
2.35.3

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to