On Thu, Nov 29, 2018 at 3:26 PM Willem de Bruijn <willemdebruijn.ker...@gmail.com> wrote: > > From: Willem de Bruijn <will...@google.com> > > Extend zerocopy to udp sockets. Allow setting sockopt SO_ZEROCOPY and > interpret flag MSG_ZEROCOPY. > > This patch was previously part of the zerocopy RFC patchsets. Zerocopy > is not effective at small MTU. With segmentation offload building > larger datagrams, the benefit of page flipping outweights the cost of > generating a completion notification. > > tools/testing/selftests/net/msg_zerocopy.sh after applying follow-on > test patch and making skb_orphan_frags_rx same as skb_orphan_frags: > > ipv4 udp -t 1 > tx=191312 (11938 MB) txc=0 zc=n > rx=191312 (11938 MB) > ipv4 udp -z -t 1 > tx=304507 (19002 MB) txc=304507 zc=y > rx=304507 (19002 MB) > ok > ipv6 udp -t 1 > tx=174485 (10888 MB) txc=0 zc=n > rx=174485 (10888 MB) > ipv6 udp -z -t 1 > tx=294801 (18396 MB) txc=294801 zc=y > rx=294801 (18396 MB) > ok > > Changes > v1 -> v2 > - Fixup reverse christmas tree violation > v2 -> v3 > - Split refcount avoidance optimization into separate patch > - Fix refcount leak on error in fragmented case > (thanks to Paolo Abeni for pointing this one out!) > - Fix refcount inc on zero
one additional change that I forgot to add to the changelog - test sock_flag SOCK_ZEROCOPY directly in __ip_append_data. this is needed since commit 5cf4a8532c99 ("tcp: really ignore MSG_ZEROCOPY if no SO_ZEROCOPY") did the same for tcp.