Skip to content

UDP/IPv6 refactoring

Pavel Begunkov lkml netdev 3 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v3 Latest10 patches 7 repliesIn review
  2. v211 patches 0 repliesSuperseded
  3. v111 patches 6 repliesSuperseded

Patches in v3 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/10ipv6: optimise ipcm6 cookie initinclude/net/ipv6.h net/ipv6/datagram.c net/ipv6/ip6_output.c +3 more+5 -330 replies
2/10udp/ipv6: move pending section of udpv6_sendmsgnet/ipv6/udp.c+42 -282 replies
3/10udp/ipv6: prioritise the ip6 path over ip4 checksnet/ipv6/udp.c+17 -202 replies
4/10udp/ipv6: optimise udpv6_sendmsg() daddr checksnet/ipv6/udp.c+11 -120 replies
5/10udp/ipv6: optimise out daddr reassignmentnet/ipv6/udp.c+0 -80 replies
6/10udp/ipv6: clean up udpv6_sendmsg's saddr initnet/ipv6/udp.c+4 -60 replies
7/10ipv6: partially inline fl6_update_dst()include/net/ipv6.h net/ipv6/exthdrs.c+18 -120 replies
8/10ipv6: refactor opts push in __ip6_make_skb()net/ipv6/ip6_output.c+8 -50 replies
9/10ipv6: improve opt-less __ip6_make_skb()net/ipv6/ip6_output.c+3 -50 replies
10/10ipv6: clean up ip6_setup_corknet/ipv6/ip6_output.c+13 -170 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v3 yet.

Read the v3 thread

Cover letter [PATCH net-next v3 00/10] UDP/IPv6 refactoring

Refactor UDP/IPv6 and especially udpv6_sendmsg() paths. The end result looks cleaner than it was before and the series also removes a bunch of instructions and other overhead from the hot path positively affecting performance.

Testing over dummy netdev with 16 byte packets yields 2240481 tx/s, comparing to 2203417 tx/s previously, which is around +1.6%

v2: no code changes, just resending properly
v3: remove patch moving getfrag callback assignment
add benchmark numbers

Pavel Begunkov (10):
ipv6: optimise ipcm6 cookie init udp/ipv6: move pending section of udpv6_sendmsg udp/ipv6: prioritise the ip6 path over ip4 checks udp/ipv6: optimise udpv6_sendmsg() daddr checks udp/ipv6: optimise out daddr reassignment udp/ipv6: clean up udpv6_sendmsg's saddr init
ipv6: partially inline fl6_update_dst()
ipv6: refactor opts push in __ip6_make_skb()
ipv6: improve opt-less __ip6_make_skb()
ipv6: clean up ip6_setup_cork

 include/net/ipv6.h    |  24 +++----
 net/ipv6/datagram.c   |   4 +-
 net/ipv6/exthdrs.c    |  15 ++---
 net/ipv6/ip6_output.c |  53 +++++++--------
 net/ipv6/raw.c        |   8 +--
 net/ipv6/udp.c        | 153 ++++++++++++++++++++----------------------
 net/l2tp/l2tp_ip6.c   |   8 +--
 7 files changed, 120 insertions(+), 145 deletions(-)
Signature · 1 line
2.36.0