Bug #366

Fwd: [PATCH] tcp: fix tcp_grow_window() for large incoming frames

Added by David Taht about 1 year ago. Updated about 1 year ago.

Status:Rejected Start date:
Priority:Normal Due date:
Assignee:Dave Täht % Done:

0%

Category:Linux Kernel Spent time: 0.50 hour
Target version:1st Public Cerowrt release

Description

While this is not important for cerowrt, it could explain some things.

---------- Forwarded message ----------
From: Eric Dumazet <>
Date: Tue, Apr 17, 2012 at 2:28 AM
Subject: [PATCH] tcp: fix tcp_grow_window() for large incoming frames
To: David Miller <>
Cc: Neal Cardwell <>, Tom Herbert
<>, netdev <>

From: Eric Dumazet <>

tcp_grow_window() has to grow rcv_ssthresh up to window_clamp, allowing
sender to increase its window.

tcp_grow_window() still assumes a tcp frame is under MSS, but its no
longer true with LRO/GRO.

This patch fixes one of the performance issue we noticed with GRO on.

Signed-off-by: Eric Dumazet <>
Cc: Neal Cardwell <>
Cc: Tom Herbert <>
---
Sorry for the delay, this was discussed a long time ago.

 net/ipv4/tcp_input.c |    1
 1 file changed, 1 insertion(
)

diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 9944c1d..3ff36406 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@ -335,6 +335,7 @ static void tcp_grow_window(struct sock *sk, const
struct sk_buff *skb)
                       incr = __tcp_grow_window(sk, skb);

               if (incr) {
+                       incr = max_t(int, incr, 2 * skb->len);
                       tp->rcv_ssthresh = min(tp->rcv_ssthresh + incr,
                                              tp->window_clamp);
                       inet_csk(sk)->icsk_ack.quick |= 1;

History

Updated by Dave Täht about 1 year ago

  • Target version set to 1st Public Cerowrt release
  • Assignee set to Dave Täht
  • Status changed from New to Rejected
  • Category set to Linux Kernel

3.4 issue that only affects boxes with gro/lro on. Important to note on testing with x86, not a cero issue.

Also available in: Atom PDF