aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorIlpo Järvinen <ilpo.jarvinen@helsinki.fi>2009-02-27 23:44:29 -0500
committerDavid S. Miller <davem@davemloft.net>2009-03-02 06:00:10 -0500
commit62ad27619cbcf23fb8581ae72f3806c1d90a861d (patch)
tree2fa0b2f94534c333312aa2a657ef84c257993818 /net
parent59a08cba6a604a265e45e9b970e372554cf46627 (diff)
tcp: deferring in middle of queue makes very little sense
If skb can be sent right away, we certainly should do that if it's in the middle of the queue because it won't get more data into it. Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/ipv4/tcp_output.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 2471cd4f66db..fa3c81aa4e6a 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -1356,6 +1356,10 @@ static int tcp_tso_should_defer(struct sock *sk, struct sk_buff *skb)
1356 if (limit >= sk->sk_gso_max_size) 1356 if (limit >= sk->sk_gso_max_size)
1357 goto send_now; 1357 goto send_now;
1358 1358
1359 /* Middle in queue won't get any more data, full sendable already? */
1360 if ((skb != tcp_write_queue_tail(sk)) && (limit >= skb->len))
1361 goto send_now;
1362
1359 if (sysctl_tcp_tso_win_divisor) { 1363 if (sysctl_tcp_tso_win_divisor) {
1360 u32 chunk = min(tp->snd_wnd, tp->snd_cwnd * tp->mss_cache); 1364 u32 chunk = min(tp->snd_wnd, tp->snd_cwnd * tp->mss_cache);
1361 1365