]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commit
vxlan: Add needed_headroom for lower device
authorSven Eckelmann <sven@narfation.org>
Thu, 26 Nov 2020 12:52:46 +0000 (13:52 +0100)
committerJakub Kicinski <kuba@kernel.org>
Tue, 1 Dec 2020 02:10:12 +0000 (18:10 -0800)
commit0a35dc41fea67ac4495ce7584406bf9557a6e7d0
treeec8dd7b5244436cc6d53ca433bcd477f25e4b06b
parente3d5e971d2f83d8ddd4b91a50cea4517fb488383
vxlan: Add needed_headroom for lower device

It was observed that sending data via batadv over vxlan (on top of
wireguard) reduced the performance massively compared to raw ethernet or
batadv on raw ethernet. A check of perf data showed that the
vxlan_build_skb was calling all the time pskb_expand_head to allocate
enough headroom for:

  min_headroom = LL_RESERVED_SPACE(dst->dev) + dst->header_len
   + VXLAN_HLEN + iphdr_len;

But the vxlan_config_apply only requested needed headroom for:

  lowerdev->hard_header_len + VXLAN6_HEADROOM or VXLAN_HEADROOM

So it completely ignored the needed_headroom of the lower device. The first
caller of net_dev_xmit could therefore never make sure that enough headroom
was allocated for the rest of the transmit path.

Cc: Annika Wickert <annika.wickert@exaring.de>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Tested-by: Annika Wickert <aw@awlnx.space>
Link: https://lore.kernel.org/r/20201126125247.1047977-1-sven@narfation.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/vxlan.c