Message ID | 1319138186.2854.5.camel@edumazet-laptop |
---|---|
State | Changes Requested, archived |
Headers | show |
From: Eric Dumazet <eric.dumazet@gmail.com> Date: Thu, 20 Oct 2011 21:16:26 +0200 > Since commit 356f039822b (TCP: increase default initial receive > window.), we allow sender to send 10 (TCP_DEFAULT_INIT_RCVWND) segments. > > Change tcp_fixup_rcvbuf() to reflect this change, even if no real change > is expected, since sysctl_tcp_rmem[1] = 87380 and this value > is bigger than tcp_fixup_rcvbuf() computed rcvmem (~23720) > > Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> ... > + unsigned int mss = min_t(unsigned int, tp->advmss, 1460); I don't understand where this calculation comes from, and even if it should be obvious it isn't to me and deserves a mention in the commit message at a minimum. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Le jeudi 20 octobre 2011 à 15:50 -0400, David Miller a écrit : > From: Eric Dumazet <eric.dumazet@gmail.com> > Date: Thu, 20 Oct 2011 21:16:26 +0200 > > > Since commit 356f039822b (TCP: increase default initial receive > > window.), we allow sender to send 10 (TCP_DEFAULT_INIT_RCVWND) segments. > > > > Change tcp_fixup_rcvbuf() to reflect this change, even if no real change > > is expected, since sysctl_tcp_rmem[1] = 87380 and this value > > is bigger than tcp_fixup_rcvbuf() computed rcvmem (~23720) > > > > Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> > ... > > + unsigned int mss = min_t(unsigned int, tp->advmss, 1460); > > I don't understand where this calculation comes from, and even if it > should be obvious it isn't to me and deserves a mention in the commit > message at a minimum. This is the calculation done in commit 356f039822b as well. The window is 10*MSS, but no more than 14600 On loopback, this matters, because we could end with rcvmem=219680 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Eric Dumazet <eric.dumazet@gmail.com> Date: Thu, 20 Oct 2011 22:02:34 +0200 > Le jeudi 20 octobre 2011 à 15:50 -0400, David Miller a écrit : >> From: Eric Dumazet <eric.dumazet@gmail.com> >> Date: Thu, 20 Oct 2011 21:16:26 +0200 >> >> > Since commit 356f039822b (TCP: increase default initial receive >> > window.), we allow sender to send 10 (TCP_DEFAULT_INIT_RCVWND) segments. >> > >> > Change tcp_fixup_rcvbuf() to reflect this change, even if no real change >> > is expected, since sysctl_tcp_rmem[1] = 87380 and this value >> > is bigger than tcp_fixup_rcvbuf() computed rcvmem (~23720) >> > >> > Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> >> ... >> > + unsigned int mss = min_t(unsigned int, tp->advmss, 1460); >> >> I don't understand where this calculation comes from, and even if it >> should be obvious it isn't to me and deserves a mention in the commit >> message at a minimum. > > This is the calculation done in commit 356f039822b as well. > > The window is 10*MSS, but no more than 14600 > > On loopback, this matters, because we could end with rcvmem=219680 Thanks, please help weak brains like mine by adding this to the commit message. :-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 1e848b2..5a29ecc 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -345,17 +345,15 @@ static void tcp_grow_window(struct sock *sk, struct sk_buff *skb) static void tcp_fixup_rcvbuf(struct sock *sk) { - struct tcp_sock *tp = tcp_sk(sk); - int rcvmem = SKB_TRUESIZE(tp->advmss + MAX_TCP_HEADER); + const struct tcp_sock *tp = tcp_sk(sk); + unsigned int mss = min_t(unsigned int, tp->advmss, 1460); + int rcvmem = SKB_TRUESIZE(mss + MAX_TCP_HEADER); - /* Try to select rcvbuf so that 4 mss-sized segments - * will fit to window and corresponding skbs will fit to our rcvbuf. - * (was 3; 4 is minimum to allow fast retransmit to work.) - */ - while (tcp_win_from_space(rcvmem) < tp->advmss) + while (tcp_win_from_space(rcvmem) < mss) rcvmem += 128; - if (sk->sk_rcvbuf < 4 * rcvmem) - sk->sk_rcvbuf = min(4 * rcvmem, sysctl_tcp_rmem[2]); + rcvmem *= TCP_DEFAULT_INIT_RCVWND; + if (sk->sk_rcvbuf < rcvmem) + sk->sk_rcvbuf = min(rcvmem, sysctl_tcp_rmem[2]); } /* 4. Try to fixup all. It is made immediately after connection enters
Since commit 356f039822b (TCP: increase default initial receive window.), we allow sender to send 10 (TCP_DEFAULT_INIT_RCVWND) segments. Change tcp_fixup_rcvbuf() to reflect this change, even if no real change is expected, since sysctl_tcp_rmem[1] = 87380 and this value is bigger than tcp_fixup_rcvbuf() computed rcvmem (~23720) Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> --- net/ipv4/tcp_input.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html