TCP Auto Corking Comes To The Linux 3.14 Kernel
Eric Dumazet of Google, who was working on the TCP auto corking patch-set, describes the networking feature as:
With the introduction of TCP Small Queues, TSO auto sizing, and TCP pacing, we can implement Automatic Corking in the kernel, to help applications doing small write()/sendmsg() to TCP sockets.As then simply described in the pull request, "Basically, if we have a small send and a previous packet is already in the qdisc or device queue, defer until TX completion or we get more data."
Idea is to change tcp_push() to check if the current skb payload is under skb optimal size (a multiple of MSS bytes)
If under 'size_goal', and at least one packet is still in Qdisc or NIC TX queues, set the TCP Small Queue Throttled bit, so that the push will be delayed up to TX completion time.
This delay might allow the application to coalesce more bytes in the skb in following write()/sendmsg()/sendfile() system calls.
Other networking changes for the Linux 3.14 kernel include a BPF debugger and asm tool, support for user-space to manage IPv6 temporary addresses, support for bonding to be configured fully using netlink, a new Heavy-Hitter Filter (HHF) qdisc, 10G support in the generic phylib, and various other networking changes.
Other Linux 3.14 networking changes can be found via the pull request by David Miller.