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. 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 | 119 +++++++++++++++--- 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 | 94 ++++++++++++++ .../selftests/bpf/progs/test_xdp_devmap.c | 19 +++ .../selftests/bpf/progs/test_xdp_devmap2.c | 19 +++ .../bpf/progs/test_xdp_with_devmap.c | 17 +++ 12 files changed, 322 insertions(+), 17 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.c create mode 100644 tools/testing/selftests/bpf/progs/test_xdp_devmap2.c create mode 100644 tools/testing/selftests/bpf/progs/test_xdp_with_devmap.c -- 2.21.1 (Apple Git-122.3)