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

From: Pavel Begunkov
Date: Fri May 13 2022 - 11:26:54 EST


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(-)

--
2.36.0