mbox series

[bpf-next,v2,0/7] BPF link support for tc BPF programs

Message ID 20230607192625.22641-1-daniel@iogearbox.net (mailing list archive)
Headers show
Series BPF link support for tc BPF programs | expand

Message

Daniel Borkmann June 7, 2023, 7:26 p.m. UTC
This series adds BPF link support for tc BPF programs. We initially
presented the motivation, related work and design at last year's LPC
conference in the networking & BPF track [0], and a recent update on
our progress of the rework during this year's LSF/MM/BPF summit [1].
The main changes are in first two patches and the last two have an
extensive batch of test cases we developed along with it, please see
individual patches for details. We tested this series with tc-testing
selftest suite as well as BPF CI/selftests. Thanks!

  [0] https://lpc.events/event/16/contributions/1353/
  [1] http://vger.kernel.org/bpfconf2023_material/tcx_meta_netdev_borkmann.pdf

Daniel Borkmann (7):
  bpf: Add generic attach/detach/query API for multi-progs
  bpf: Add fd-based tcx multi-prog infra with link support
  libbpf: Add opts-based attach/detach/query API for tcx
  libbpf: Add link-based API for tcx
  bpftool: Extend net dump with tcx progs
  selftests/bpf: Add mprog API tests for BPF tcx opts
  selftests/bpf: Add mprog API tests for BPF tcx links

 MAINTAINERS                                   |    5 +-
 include/linux/bpf_mprog.h                     |  245 ++
 include/linux/netdevice.h                     |   15 +-
 include/linux/skbuff.h                        |    4 +-
 include/net/sch_generic.h                     |    2 +-
 include/net/tcx.h                             |  157 +
 include/uapi/linux/bpf.h                      |   72 +-
 kernel/bpf/Kconfig                            |    1 +
 kernel/bpf/Makefile                           |    3 +-
 kernel/bpf/mprog.c                            |  476 +++
 kernel/bpf/syscall.c                          |   95 +-
 kernel/bpf/tcx.c                              |  347 +++
 net/Kconfig                                   |    5 +
 net/core/dev.c                                |  267 +-
 net/core/filter.c                             |    4 +-
 net/sched/Kconfig                             |    4 +-
 net/sched/sch_ingress.c                       |   45 +-
 tools/bpf/bpftool/net.c                       |   92 +-
 tools/include/uapi/linux/bpf.h                |   72 +-
 tools/lib/bpf/bpf.c                           |   83 +-
 tools/lib/bpf/bpf.h                           |   61 +-
 tools/lib/bpf/libbpf.c                        |   50 +-
 tools/lib/bpf/libbpf.h                        |   17 +
 tools/lib/bpf/libbpf.map                      |    2 +
 .../selftests/bpf/prog_tests/tc_helpers.h     |   72 +
 .../selftests/bpf/prog_tests/tc_links.c       | 2279 ++++++++++++++
 .../selftests/bpf/prog_tests/tc_opts.c        | 2698 +++++++++++++++++
 .../selftests/bpf/progs/test_tc_link.c        |   40 +
 28 files changed, 6995 insertions(+), 218 deletions(-)
 create mode 100644 include/linux/bpf_mprog.h
 create mode 100644 include/net/tcx.h
 create mode 100644 kernel/bpf/mprog.c
 create mode 100644 kernel/bpf/tcx.c
 create mode 100644 tools/testing/selftests/bpf/prog_tests/tc_helpers.h
 create mode 100644 tools/testing/selftests/bpf/prog_tests/tc_links.c
 create mode 100644 tools/testing/selftests/bpf/prog_tests/tc_opts.c
 create mode 100644 tools/testing/selftests/bpf/progs/test_tc_link.c