This patch series add mmap() support to TCP sockets for RX zero copy. While tcp_mmap() patch itself is quite small (~100 LOC), optimal support for asynchronous mmap() required better SO_RCVLOWAT behavior, and a test program to demonstrate how mmap() on TCP sockets can be used.
Note that mmap() (and associated munmap()) calls are adding more pressure on per-process VM semaphore, so might not show benefit for processus with high number of threads. Eric Dumazet (5): tcp: fix SO_RCVLOWAT and RCVBUF autotuning tcp: fix delayed acks behavior for SO_RCVLOWAT tcp: avoid extra wakeups for SO_RCVLOWAT users tcp: implement mmap() for zero copy receive selftests: net: add tcp_mmap program include/linux/net.h | 1 + include/net/tcp.h | 4 + net/core/sock.c | 5 +- net/ipv4/af_inet.c | 3 +- net/ipv4/tcp.c | 138 ++++++++ net/ipv4/tcp_input.c | 22 +- net/ipv6/af_inet6.c | 3 +- tools/testing/selftests/net/Makefile | 2 + tools/testing/selftests/net/tcp_mmap.c | 437 +++++++++++++++++++++++++ 9 files changed, 608 insertions(+), 7 deletions(-) create mode 100644 tools/testing/selftests/net/tcp_mmap.c -- 2.17.0.484.g0c8726318c-goog