[TCP]: Fix tcp_tso_should_defer() when limit>=65536
authorDavid S. Miller <davem@davemloft.net>
Sun, 12 Mar 2006 02:51:49 +0000 (18:51 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sun, 12 Mar 2006 02:51:49 +0000 (18:51 -0800)
That's >= a full sized TSO frame, so we should always
return 0 in that case.

Based upon a report and initial patch from Lachlan
Andrew, final patch suggested by Herbert Xu.

Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_output.c

index a7623ea..9f498a6 100644 (file)
@@ -1036,6 +1036,10 @@ static int tcp_tso_should_defer(struct sock *sk, struct tcp_sock *tp, struct sk_
 
        limit = min(send_win, cong_win);
 
+       /* If a full-sized TSO skb can be sent, do it. */
+       if (limit >= 65536)
+               return 0;
+
        if (sysctl_tcp_tso_win_divisor) {
                u32 chunk = min(tp->snd_wnd, tp->snd_cwnd * tp->mss_cache);