tcp: tso: remove tp->tso_deferred
authorEric Dumazet <edumazet@google.com>
Thu, 26 Feb 2015 22:10:18 +0000 (14:10 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sat, 28 Feb 2015 20:10:39 +0000 (15:10 -0500)
commit5f852eb536ad651b8734559dcf4353514cb0bea3
treee6661e5fba290360597892ec96a58444db7c78a0
parent6588af614e7b79294fbcd4a666a7422c0c854e80
tcp: tso: remove tp->tso_deferred

TSO relies on ability to defer sending a small amount of packets.
Heuristic is to wait for future ACKS in hope to send more packets at once.
Current algorithm uses a per socket tso_deferred field as a pseudo timer.

This pseudo timer relies on future ACK, but there is no guarantee
we receive them in time.

Fix would be to use a real timer, but cost of such timer is probably too
expensive for typical cases.

This patch changes the logic to test the time of last transmit,
because we should not add bursts of more than 1ms for any given flow.

We've used this patch for about two years at Google, before FQ/pacing
as it would reduce a fair amount of bursts.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/tcp.h
net/ipv4/tcp_output.c