Implementation of Daniel's proposal for allowing DEVMAP entries to be a device index, program fd pair. Programs are run after XDP_REDIRECT and have access to both Rx device and Tx device. v3 - renamed struct to bpf_devmap_val - used offsetofend to check for expected map size, modification of Toke's comment - check for explicit value sizes - adjusted switch statement in dev_map_run_prog per Andrii's comment - changed SEC shortcut to xdp_devmap - changed selftests to use skeleton and new map declaration v2 - moved dev_map_ext_val definition to uapi to formalize the API for devmap extensions; add bpf_ prefix to the prog_fd and prog_id entries - changed devmap code to handle struct in a way that it can support future extensions - fixed subject in libbpf patch v1 - fixed prog put on invalid program - Toke - changed write value from id to fd per Toke's comments about capabilities - add test cases David Ahern (5): devmap: Formalize map value as a named struct bpf: Add support to attach bpf program to a devmap entry xdp: Add xdp_txq_info to xdp_buff libbpf: Add SEC name for xdp programs attached to device map selftest: Add tests for XDP programs in devmap entries include/linux/bpf.h | 5 + include/net/xdp.h | 5 + include/uapi/linux/bpf.h | 12 ++ kernel/bpf/devmap.c | 121 +++++++++++++++--- net/core/dev.c | 18 +++ net/core/filter.c | 17 +++ tools/include/uapi/linux/bpf.h | 12 ++ tools/lib/bpf/libbpf.c | 2 + .../bpf/prog_tests/xdp_devmap_attach.c | 89 +++++++++++++ .../bpf/progs/test_xdp_devmap_helpers.c | 22 ++++ .../bpf/progs/test_xdp_with_devmap_helpers.c | 43 +++++++ 11 files changed, 328 insertions(+), 18 deletions(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/xdp_devmap_attach.c create mode 100644 tools/testing/selftests/bpf/progs/test_xdp_devmap_helpers.c create mode 100644 tools/testing/selftests/bpf/progs/test_xdp_with_devmap_helpers.c -- 2.21.1 (Apple Git-122.3)