Skip to content

udp/ipv6 optimisations

Pavel Begunkov lkml netdev 1 version Applied

Status from this message: This series was applied to netdev/net-next.git (master)

Get series with b4
b4 am [email protected]

Versions newest first

  1. v2 Latest10 patches 1 replyApplied 10/10

Patches in v2 All 10 applied

#Subject and filesSizeRepliesApplied
1/10ipv6: optimise dst refcounting on skb initnet/ipv6/ip6_output.c+10 -10 repliesApplied
2/10udp6: shuffle up->pending AF_INET bitsnet/ipv6/udp.c+2 -30 repliesApplied
3/10ipv6: remove daddr temp buffer in __ip6_make_skbnet/ipv6/ip6_output.c+3 -40 repliesApplied
4/10ipv6: clean up cork setup/releasenet/ipv6/ip6_output.c+21 -230 repliesApplied
5/10ipv6: don't zero inet_cork_full::fl after usenet/ipv6/ip6_output.c net/ipv6/udp.c+2 -90 repliesApplied
6/10ipv6: pass full cork into __ip6_append_data()net/ipv6/ip6_output.c+4 -30 repliesApplied
7/10udp6: pass flow in ip6_make_skb together with corkinclude/net/ipv6.h net/ipv6/ip6_output.c net/ipv6/udp.c+13 -130 repliesApplied
8/10udp6: don't make extra copies of iflownet/ipv6/udp.c+42 -430 repliesApplied
9/10ipv6: optimise dst refcounting on cork initnet/ipv6/ip6_output.c net/ipv6/udp.c+11 -50 repliesApplied
10/10ipv6: partially inline ipv6_fixup_optionsinclude/net/ipv6.h net/ipv6/exthdrs.c+14 -60 repliesApplied

Reviews trailers per patch

None of the 10 patches has a Reviewed-by or Acked-by of their own; the series has one for all of them.

PatchWillem de Bruijn
SeriesR-b
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v2 thread

Cover letter [PATCH net-next v2 00/10] udp/ipv6 optimisations

Shed some weight from udp/ipv6. Zerocopy benchmarks over dummy showed ~5% tx/s improvement, should be similar for small payload non-zc cases.

The performance comes from killing 4 atomics and a couple of big struct memcpy/memset. 1/10 removes a pair of atomics on dst refcounting for cork->skb setup, 9/10 saves another pair on cork init. 5/10 and 8/10 kill extra 88B memset and memcpy respectively.

v2: add a comment about setting dst early in ip6_setup_cork()
drop non-udp patches for now
add patch 10

Pavel Begunkov (10):
ipv6: optimise dst refcounting on skb init
udp6: shuffle up->pending AF_INET bits
ipv6: remove daddr temp buffer in __ip6_make_skb
ipv6: clean up cork setup/release
ipv6: don't zero inet_cork_full::fl after use
ipv6: pass full cork into __ip6_append_data()
udp6: pass flow in ip6_make_skb together with cork
udp6: don't make extra copies of iflow
ipv6: optimise dst refcounting on cork init
ipv6: partially inline ipv6_fixup_options

 include/net/ipv6.h    |  14 ++++--
 net/ipv6/exthdrs.c    |   8 ++--
 net/ipv6/ip6_output.c |  99 ++++++++++++++++++++++------------------
 net/ipv6/udp.c        | 103 ++++++++++++++++++++----------------------
 4 files changed, 118 insertions(+), 106 deletions(-)
Signature · 1 line
2.34.1