net, veth: Alloc skb in bulk for ndo_xdp_xmit
authorLorenzo Bianconi <lorenzo@kernel.org>
Fri, 29 Jan 2021 22:04:08 +0000 (23:04 +0100)
committerDaniel Borkmann <daniel@iogearbox.net>
Thu, 4 Feb 2021 00:00:07 +0000 (01:00 +0100)
commit65e6dcf73398ddb64bb782ff2acd918d3a37a53a
tree7c86b42732ff1c1c53d479a387ff4819caab68dc
parent060fd1035880dd466607d1c279ca913dd1f96916
net, veth: Alloc skb in bulk for ndo_xdp_xmit

Split ndo_xdp_xmit and ndo_start_xmit use cases in veth_xdp_rcv routine
in order to alloc skbs in bulk for XDP_PASS verdict.

Introduce xdp_alloc_skb_bulk utility routine to alloc skb bulk list.
The proposed approach has been tested in the following scenario:

eth (ixgbe) --> XDP_REDIRECT --> veth0 --> (remote-ns) veth1 --> XDP_PASS

XDP_REDIRECT: xdp_redirect_map bpf sample
XDP_PASS: xdp_rxq_info bpf sample

traffic generator: pkt_gen sending udp traffic on a remote device

bpf-next master: ~3.64Mpps
bpf-next + skb bulking allocation: ~3.79Mpps

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Toshiaki Makita <toshiaki.makita1@gmail.com>
Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>
Link: https://lore.kernel.org/bpf/a14a30d3c06fff24e13f836c733d80efc0bd6eb5.1611957532.git.lorenzo@kernel.org
drivers/net/veth.c
include/net/xdp.h
net/core/xdp.c