From 1f396946e5b9b641506a0b310c43913358493677 Mon Sep 17 00:00:00 2001 From: Simon Goldschmidt Date: Tue, 18 Oct 2011 20:11:39 +0200 Subject: [PATCH] fixed bug #34587: TCP_BUILD_MSS_OPTION doesn't consider netif->mtu, causes slow network --- CHANGELOG | 4 ++++ src/core/tcp_out.c | 2 +- src/include/lwip/tcp_impl.h | 5 +---- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index caa6090f..a93d34c3 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -69,6 +69,10 @@ HISTORY ++ Bugfixes: + 2011-10-18: Simon Goldschmidt + * tcp_impl.h, tcp_out.c: fixed bug #34587: TCP_BUILD_MSS_OPTION doesn't + consider netif->mtu, causes slow network + 2011-10-18: Simon Goldschmidt * sockets.c: fixed bug #34581 missing parentheses in udplite sockets code diff --git a/src/core/tcp_out.c b/src/core/tcp_out.c index 93ed21fa..49c9679a 100644 --- a/src/core/tcp_out.c +++ b/src/core/tcp_out.c @@ -1067,7 +1067,7 @@ tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb) //LWIP_ASSERT("seg->tcphdr not aligned", ((mem_ptr_t)seg->tcphdr % MEM_ALIGNMENT) == 0); opts = (u32_t *)(void *)(seg->tcphdr + 1); if (seg->flags & TF_SEG_OPTS_MSS) { - TCP_BUILD_MSS_OPTION(*opts); + *opts = TCP_BUILD_MSS_OPTION(pcb->mss); opts += 1; } #if LWIP_TCP_TIMESTAMPS diff --git a/src/include/lwip/tcp_impl.h b/src/include/lwip/tcp_impl.h index e9be9d95..694583fa 100644 --- a/src/include/lwip/tcp_impl.h +++ b/src/include/lwip/tcp_impl.h @@ -303,10 +303,7 @@ struct tcp_seg { (flags & TF_SEG_OPTS_TS ? 12 : 0) /** This returns a TCP header option for MSS in an u32_t */ -#define TCP_BUILD_MSS_OPTION(x) (x) = PP_HTONL(((u32_t)2 << 24) | \ - ((u32_t)4 << 16) | \ - (((u32_t)TCP_MSS / 256) << 8) | \ - (TCP_MSS & 255)) +#define TCP_BUILD_MSS_OPTION(mss) htonl(0x02040000 | ((mss) & 0xFFFF)) /* Global variables: */ extern struct tcp_pcb *tcp_input_pcb; -- 2.39.2