While working on the SACK compression issue Jean-Louis Dupond reported, we found that his linux box was suffering very hard from tail drops on the socket backlog queue, because the opposite TCP stack was ont implementing latest RFC recommendations.
First patch is a cleanup Second patch is attempting coalescing when a new packet must be added to the backlog queue. Cooking bigger skbs helps to keep backlog list smaller and speeds its handling when user thread finally releases the socket lock. Third patch is implementing head drop as a last resort. Head drops are generally better for optimal TCP behavior. Eric Dumazet (3): tcp: remove hdrlen argument from tcp_queue_rcv() tcp: implement coalescing on backlog queue tcp: implement head drops in backlog queue include/uapi/linux/snmp.h | 1 + net/ipv4/proc.c | 1 + net/ipv4/tcp_input.c | 13 +++--- net/ipv4/tcp_ipv4.c | 89 ++++++++++++++++++++++++++++++++++++--- 4 files changed, 91 insertions(+), 13 deletions(-) -- 2.19.1.1215.g8438c0b245-goog