Hi David, hi Jakub, hi Paolo, hi Eric, The following pull-request contains BPF updates for your *net-next* tree. We've added 54 non-merge commits during the last 10 day(s) which contain a total of 84 files changed, 4026 insertions(+), 562 deletions(-). The main changes are: 1) Add SO_REUSEPORT support for TC bpf_sk_assign from Lorenz Bauer, Daniel Borkmann 2) Support new insns from cpu v4 from Yonghong Song 3) Non-atomically allocate freelist during prefill from YiFei Zhu 4) Support defragmenting IPv(4|6) packets in BPF from Daniel Xu 5) Add tracepoint to xdp attaching failure from Leon Hwang 6) struct netdev_rx_queue and xdp.h reshuffling to reduce rebuild time from Jakub Kicinski Please consider pulling these changes from: git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git tags/for-netdev Thanks a lot! Also thanks to reporters, reviewers and testers of commits in this pull-request: Amritha Nambiar, Björn Töpel, Colm Harrington, Dave Thaler, David Vernet, Eduard Zingerman, Florian Westphal, Gerhard Engleder, Hou Tao, Jesper Dangaard Brouer, Jiri Olsa, Kuniyuki Iwashima, Quentin Monnet, Wei Fang, Yipeng Zou, Yonghong Song ---------------------------------------------------------------- The following changes since commit dc644b540a2d2874112706591234be3d3fbf9ef7: tcx: Fix splat in ingress_destroy upon tcx_entry_free (2023-07-24 11:42:35 -0700) are available in the Git repository at: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git tags/for-netdev for you to fetch changes up to 648880e9331c68b2008430fd90f3648d1795399d: Merge branch 'net: struct netdev_rx_queue and xdp.h reshuffling' (2023-08-03 08:38:53 -0700) ---------------------------------------------------------------- pull-request: bpf-next 2023-08-03 ---------------------------------------------------------------- Alan Maguire (1): selftests/bpf: fix static assert compilation issue for test_cls_*.c Alexei Starovoitov (3): Merge branch 'bpf-support-new-insns-from-cpu-v4' Merge branch 'support-defragmenting-ipv-4-6-packets-in-bpf' Merge branch 'bpf-xdp-add-tracepoint-to-xdp-attaching-failure' Arnd Bergmann (2): bpf: work around -Wuninitialized warning bpf: fix bpf_probe_read_kernel prototype mismatch Colin Ian King (1): selftests/xsk: Fix spelling mistake "querrying" -> "querying" Daniel Borkmann (1): selftests/bpf: Test that SO_REUSEPORT can be used with sk_assign helper Daniel Xu (6): netfilter: defrag: Add glue hooks for enabling/disabling defrag netfilter: bpf: Support BPF_F_NETFILTER_IP_DEFRAG in netfilter link bpf: selftests: Support not connecting client socket bpf: selftests: Support custom type and proto for client sockets bpf: selftests: Add defrag selftests netfilter: bpf: Only define get_proto_defrag_hook() if necessary Hou Tao (2): bpf, cpumap: Remove unused cmap field from bpf_cpu_map_entry bpf, devmap: Remove unused dtab field from bpf_dtab_netdev Jakub Kicinski (3): eth: add missing xdp.h includes in drivers net: move struct netdev_rx_queue out of netdevice.h net: invert the netdevice.h vs xdp.h dependency Jose E. Marchesi (1): bpf, docs: fix BPF_NEG entry in instruction-set.rst Leon Hwang (2): bpf, xdp: Add tracepoint to xdp attaching failure selftests/bpf: Add testcase for xdp attaching failure tracepoint Lorenz Bauer (8): udp: re-score reuseport groups when connected sockets are present bpf: reject unhashed sockets in bpf_sk_assign net: export inet_lookup_reuseport and inet6_lookup_reuseport net: remove duplicate reuseport_lookup functions net: document inet[6]_lookup_reuseport sk_state requirements net: remove duplicate sk_lookup helpers bpf, net: Support SO_REUSEPORT sockets with bpf_sk_assign net: remove duplicate INDIRECT_CALLABLE_DECLARE of udp[6]_ehashfn Martin KaFai Lau (3): Merge branch 'Add SO_REUSEPORT support for TC bpf_sk_assign' Merge branch 'Remove unused fields in cpumap & devmap' Merge branch 'net: struct netdev_rx_queue and xdp.h reshuffling' Pu Lehui (1): riscv, bpf: Adapt bpf trampoline to optimized riscv ftrace framework Randy Dunlap (1): libbpf: fix typos in Makefile Yauheni Kaliuta (1): tracing: bpf: use struct trace_entry in struct syscall_tp_t YiFei Zhu (1): bpf: Non-atomically allocate freelist during prefill Yonghong Song (23): MAINTAINERS: Replace my email address bpf: Support new sign-extension load insns bpf: Support new sign-extension mov insns bpf: Handle sign-extenstin ctx member accesses bpf: Support new unconditional bswap instruction bpf: Support new signed div/mod instructions. bpf: Fix jit blinding with new sdiv/smov insns bpf: Support new 32bit offset jmp instruction bpf: Add kernel/bpftool asm support for new instructions selftests/bpf: Fix a test_verifier failure selftests/bpf: Add a cpuv4 test runner for cpu=v4 testing selftests/bpf: Add unit tests for new sign-extension load insns selftests/bpf: Add unit tests for new sign-extension mov insns selftests/bpf: Add unit tests for new bswap insns selftests/bpf: Add unit tests for new sdiv/smod insns selftests/bpf: Add unit tests for new gotol insn selftests/bpf: Test ldsx with more complex cases docs/bpf: Add documentation for new instructions bpf: Fix compilation warning with -Wparentheses selftests/bpf: Enable test test_progs-cpuv4 for gcc build kernel docs/bpf: Improve documentation for cpu=v4 instructions docs/bpf: Fix malformed documentation bpf: Fix an array-index-out-of-bounds issue in disasm.c Documentation/bpf/bpf_design_QA.rst | 5 - .../bpf/standardization/instruction-set.rst | 130 +++- MAINTAINERS | 4 +- arch/riscv/net/bpf_jit_comp64.c | 153 ++-- arch/x86/net/bpf_jit_comp.c | 141 +++- drivers/net/bonding/bond_main.c | 1 + drivers/net/ethernet/amazon/ena/ena_netdev.h | 1 + drivers/net/ethernet/engleder/tsnep.h | 1 + drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h | 1 + drivers/net/ethernet/freescale/enetc/enetc.h | 1 + drivers/net/ethernet/freescale/fec.h | 1 + drivers/net/ethernet/fungible/funeth/funeth_txrx.h | 1 + drivers/net/ethernet/google/gve/gve.h | 1 + drivers/net/ethernet/intel/igc/igc.h | 1 + .../net/ethernet/microchip/lan966x/lan966x_main.h | 1 + drivers/net/ethernet/microsoft/mana/mana_en.c | 1 + drivers/net/ethernet/stmicro/stmmac/stmmac.h | 1 + drivers/net/ethernet/ti/cpsw_priv.h | 1 + drivers/net/hyperv/hyperv_net.h | 1 + drivers/net/tap.c | 1 + drivers/net/virtio_net.c | 1 + include/linux/bpf.h | 12 + include/linux/filter.h | 34 +- include/linux/netdevice.h | 55 +- include/linux/netfilter.h | 10 + include/net/busy_poll.h | 1 + include/net/inet6_hashtables.h | 81 ++- include/net/inet_hashtables.h | 74 +- include/net/mana/mana.h | 2 + include/net/netdev_rx_queue.h | 53 ++ include/net/sock.h | 7 +- include/net/xdp.h | 29 +- include/trace/events/xdp.h | 18 + include/uapi/linux/bpf.h | 9 +- kernel/bpf/btf.c | 1 + kernel/bpf/core.c | 206 +++++- kernel/bpf/cpumap.c | 3 - kernel/bpf/devmap.c | 2 - kernel/bpf/disasm.c | 58 +- kernel/bpf/memalloc.c | 24 +- kernel/bpf/offload.c | 1 + kernel/bpf/verifier.c | 349 +++++++-- kernel/trace/bpf_trace.c | 11 - kernel/trace/trace_syscalls.c | 12 +- net/bpf/test_run.c | 1 + net/core/dev.c | 6 +- net/core/filter.c | 4 +- net/core/net-sysfs.c | 1 + net/ipv4/inet_hashtables.c | 66 +- net/ipv4/netfilter/nf_defrag_ipv4.c | 17 +- net/ipv4/udp.c | 88 +-- net/ipv6/inet6_hashtables.c | 69 +- net/ipv6/netfilter/nf_defrag_ipv6_hooks.c | 11 + net/ipv6/udp.c | 96 +-- net/netfilter/core.c | 6 + net/netfilter/nf_bpf_link.c | 125 +++- net/netfilter/nf_conntrack_bpf.c | 1 + net/xdp/xsk.c | 1 + tools/include/uapi/linux/bpf.h | 9 +- tools/lib/bpf/Makefile | 4 +- tools/testing/selftests/bpf/.gitignore | 2 + tools/testing/selftests/bpf/Makefile | 33 +- .../selftests/bpf/bpf_testmod/bpf_testmod.c | 9 +- .../selftests/bpf/generate_udp_fragments.py | 90 +++ .../testing/selftests/bpf/ip_check_defrag_frags.h | 57 ++ tools/testing/selftests/bpf/network_helpers.c | 29 +- tools/testing/selftests/bpf/network_helpers.h | 3 + .../selftests/bpf/prog_tests/assign_reuse.c | 199 ++++++ .../selftests/bpf/prog_tests/ip_check_defrag.c | 283 ++++++++ .../selftests/bpf/prog_tests/test_ldsx_insn.c | 139 ++++ tools/testing/selftests/bpf/prog_tests/verifier.c | 10 + .../testing/selftests/bpf/prog_tests/xdp_attach.c | 65 ++ .../testing/selftests/bpf/progs/ip_check_defrag.c | 104 +++ .../selftests/bpf/progs/test_assign_reuse.c | 142 ++++ .../selftests/bpf/progs/test_cls_redirect.h | 9 + tools/testing/selftests/bpf/progs/test_ldsx_insn.c | 118 ++++ .../selftests/bpf/progs/test_xdp_attach_fail.c | 54 ++ tools/testing/selftests/bpf/progs/verifier_bswap.c | 59 ++ tools/testing/selftests/bpf/progs/verifier_gotol.c | 44 ++ tools/testing/selftests/bpf/progs/verifier_ldsx.c | 131 ++++ tools/testing/selftests/bpf/progs/verifier_movsx.c | 213 ++++++ tools/testing/selftests/bpf/progs/verifier_sdiv.c | 781 +++++++++++++++++++++ tools/testing/selftests/bpf/verifier/basic_instr.c | 6 +- tools/testing/selftests/bpf/xskxceiver.c | 2 +- 84 files changed, 4026 insertions(+), 562 deletions(-) create mode 100644 include/net/netdev_rx_queue.h create mode 100755 tools/testing/selftests/bpf/generate_udp_fragments.py create mode 100644 tools/testing/selftests/bpf/ip_check_defrag_frags.h create mode 100644 tools/testing/selftests/bpf/prog_tests/assign_reuse.c create mode 100644 tools/testing/selftests/bpf/prog_tests/ip_check_defrag.c create mode 100644 tools/testing/selftests/bpf/prog_tests/test_ldsx_insn.c create mode 100644 tools/testing/selftests/bpf/progs/ip_check_defrag.c create mode 100644 tools/testing/selftests/bpf/progs/test_assign_reuse.c create mode 100644 tools/testing/selftests/bpf/progs/test_ldsx_insn.c create mode 100644 tools/testing/selftests/bpf/progs/test_xdp_attach_fail.c create mode 100644 tools/testing/selftests/bpf/progs/verifier_bswap.c create mode 100644 tools/testing/selftests/bpf/progs/verifier_gotol.c create mode 100644 tools/testing/selftests/bpf/progs/verifier_ldsx.c create mode 100644 tools/testing/selftests/bpf/progs/verifier_movsx.c create mode 100644 tools/testing/selftests/bpf/progs/verifier_sdiv.c