net: xdp: Introduce bulking for xdp tx return path
authorLorenzo Bianconi <lorenzo@kernel.org>
Fri, 13 Nov 2020 11:48:28 +0000 (12:48 +0100)
committerDaniel Borkmann <daniel@iogearbox.net>
Sat, 14 Nov 2020 01:28:59 +0000 (02:28 +0100)
commit8965398713d831f6b893805880c249e62e9059ae
tree2ad1b15917d4d49c22c4a4e8ab01052b590b976f
parent6f100640ca5b2a2ff67b001c9fd3de21f7b12cf2
net: xdp: Introduce bulking for xdp tx return path

XDP bulk APIs introduce a defer/flush mechanism to return
pages belonging to the same xdp_mem_allocator object
(identified via the mem.id field) in bulk to optimize
I-cache and D-cache since xdp_return_frame is usually run
inside the driver NAPI tx completion loop.
The bulk queue size is set to 16 to be aligned to how
XDP_REDIRECT bulking works. The bulk is flushed when
it is full or when mem.id changes.
xdp_frame_bulk is usually stored/allocated on the function
call-stack to avoid locking penalties.
Current implementation considers only page_pool memory model.

Suggested-by: Jesper Dangaard Brouer <brouer@redhat.com>
Co-developed-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Link: https://lore.kernel.org/bpf/e190c03eac71b20c8407ae0fc2c399eda7835f49.1605267335.git.lorenzo@kernel.org
include/net/xdp.h
net/core/xdp.c