Hi XDP-folks,
This two patch series contain two optimizations for the
bpf_redirect_map() helper and the xdp_do_redirect() function.
The bpf_redirect_map() optimization is about avoiding the map lookup
dispatching. Instead of having a switch-statement and selecting the
correct lookup function, we let the verifier patch the
bpf_redirect_map() call to a specific lookup function. This way the
run-time lookup is avoided.
The xdp_do_redirect() patch restructures the code, so that the map
pointer indirection can be avoided.
Performance-wise I got 3% improvement for XSKMAP
(sample:xdpsock/rx-drop), and 4% (sample:xdp_redirect_map) on my
machine.
More details in each commit. Changes since the RFC is outlined in each
commit.
Cheers,
Björn
Björn Töpel (2):
bpf, xdp: per-map bpf_redirect_map functions for XDP
bpf, xdp: restructure redirect actions
include/linux/bpf.h | 20 ++--
include/linux/filter.h | 13 ++-
include/net/xdp_sock.h | 6 +-
include/trace/events/xdp.h | 66 ++++++-----
kernel/bpf/cpumap.c | 3 +-
kernel/bpf/devmap.c | 5 +-
kernel/bpf/verifier.c | 28 +++--
net/core/filter.c | 219 ++++++++++++++++++-------------------
net/xdp/xskmap.c | 1 -
9 files changed, 192 insertions(+), 169 deletions(-)
base-commit: 7b1e385c9a488de9291eaaa412146d3972e9dec5
--
2.27.0