Hi David, The following pull-request contains BPF updates for your *net-next* tree.
The main changes are: 1) Various different arm32 JIT improvements in order to optimize code emission and make the JIT code itself more robust, from Russell. 2) Support simultaneous driver and offloaded XDP in order to allow for advanced use-cases where some work is offloaded to the NIC and some to the host. Also add ability for bpftool to load programs and maps beyond just the cgroup case, from Jakub. 3) Add BPF JIT support in nfp for multiplication as well as division. For the latter in particular, it uses the reciprocal algorithm to emulate it, from Jiong. 4) Add BTF pretty print functionality to bpftool in plain and JSON output format, from Okash. 5) Add build and installation to the BPF helper man page into bpftool, from Quentin. 6) Add a TCP BPF callback for listening sockets which is triggered right after the socket transitions to TCP_LISTEN state, from Andrey. 7) Add a new cgroup tree command to bpftool which iterates over the whole cgroup tree and prints all attached programs, from Roman. 8) Improve xdp_redirect_cpu sample to support parsing of double VLAN tagged packets, from Jesper. Please consider pulling these changes from: git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git Thanks a lot! ---------------------------------------------------------------- The following changes since commit ab8565af68001ac5f9331daa311938ead3eb5636: Merge branch 'IP-listification-follow-ups' (2018-07-06 11:19:08 +0900) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git for you to fetch changes up to 13f7432bdd8eb2eb55eed2af1469d37c0f667617: Merge branch 'bpf-tcp-listen-cb' (2018-07-15 00:09:22 +0200) ---------------------------------------------------------------- Andrey Ignatov (6): bpf: Add BPF_SOCK_OPS_TCP_LISTEN_CB bpf: Sync bpf.h to tools/ selftests/bpf: Fix const'ness in cgroup_helpers selftests/bpf: Switch test_tcpbpf_user to cgroup_helpers selftests/bpf: Better verification in test_tcpbpf selftests/bpf: Test case for BPF_SOCK_OPS_TCP_LISTEN_CB Daniel Borkmann (7): Merge branch 'bpf-nfp-mul-div-support' Merge branch 'bpf-bpftool-improved-prog-load' Merge branch 'bpf-helper-man-install' Merge branch 'bpf-arm-jit-improvements' Merge branch 'bpf-arm-jit-improvements' Merge branch 'bpf-xdp-driver-and-hw' Merge branch 'bpf-tcp-listen-cb' Jakub Kicinski (21): selftests/bpf: remove duplicated word from test offloads selftests/bpf: add Error: prefix in check_extack helper tools: bpftool: refactor argument parsing for prog load tools: bpftool: add support for loading programs for offload tools: libbpf: expose the prog type guessing from section name logic tools: bpftool: allow users to specify program type for prog load tools: libbpf: recognize offload neutral maps tools: libbpf: add extended attributes version of bpf_object__open() tools: bpftool: reimplement bpf_prog_load() for prog load tools: libbpf: move library error code into a separate file tools: bpf: make use of reallocarray tools: libbpf: allow map reuse tools: bpftool: allow reuse of maps with bpftool prog load xdp: add per mode attributes for attached programs xdp: don't make drivers report attachment mode xdp: factor out common program/flags handling from drivers xdp: support simultaneous driver and hw XDP attachment netdevsim: add support for simultaneous driver and hw XDP selftests/bpf: add test for multiple programs nfp: add support for simultaneous driver and hw XDP tools: include reallocarray feature test in FEATURE_TESTS_BASIC Jesper Dangaard Brouer (1): samples/bpf: xdp_redirect_cpu handle parsing of double VLAN tagged packets Jiong Wang (6): lib: reciprocal_div: implement the improved algorithm on the paper mentioned nfp: bpf: rename umin/umax to umin_src/umax_src nfp: bpf: copy range info for all operands of all ALU operations nfp: bpf: support u16 and u32 multiplications nfp: bpf: support u32 divide using reciprocal_div.h nfp: bpf: migrate to advanced reciprocal divide in reciprocal_div.h Okash Khawaja (3): bpf: btf: export btf types and name by offset from lib bpf: btf: add btf print functionality bpf: btf: print map dump and lookup with btf info Quentin Monnet (3): bpf: fix documentation for eBPF helpers tools: bpf: synchronise BPF UAPI header with tools tools: bpf: build and install man page for eBPF helpers from bpftool/ Roman Gushchin (3): bpftool: introduce cgroup tree command bpftool: document cgroup tree command bpftool: add bash completion for cgroup tree command Russell King (18): ARM: net: bpf: enumerate the JIT scratch stack layout ARM: net: bpf: provide load/store ops with negative immediates ARM: net: bpf: use negative numbers for stacked registers ARM: net: bpf: remove is_on_stack() and sstk/dstk ARM: net: bpf: provide accessor functions for BPF registers ARM: net: bpf: 64-bit accessor functions for BPF registers ARM: net: bpf: access eBPF scratch space using ARM FP register ARM: net: bpf: imm12 constant conversion ARM: net: bpf: use immediate forms of instructions where possible ARM: net: bpf: use ldr instructions with shifted rm register ARM: net: bpf: avoid reloading 'index' ARM: net: bpf: avoid reloading 'array' ARM: net: bpf: always use odd/even register pair ARM: net: bpf: use double-word load/stores where available ARM: net: bpf: improve 64-bit load immediate implementation ARM: net: bpf: improve 64-bit sign-extended immediate load ARM: net: bpf: improve 64-bit store implementation ARM: net: bpf: improve 64-bit ALU implementation arch/arm/net/bpf_jit_32.c | 1062 +++++++++++--------- arch/arm/net/bpf_jit_32.h | 42 +- drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 1 - drivers/net/ethernet/cavium/thunder/nicvf_main.c | 1 - drivers/net/ethernet/intel/i40e/i40e_main.c | 1 - drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 1 - drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 1 - drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 1 - drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 1 - drivers/net/ethernet/netronome/nfp/bpf/jit.c | 249 ++++- drivers/net/ethernet/netronome/nfp/bpf/main.c | 11 +- drivers/net/ethernet/netronome/nfp/bpf/main.h | 43 +- drivers/net/ethernet/netronome/nfp/bpf/offload.c | 6 +- drivers/net/ethernet/netronome/nfp/bpf/verifier.c | 85 +- drivers/net/ethernet/netronome/nfp/nfp_asm.h | 28 + drivers/net/ethernet/netronome/nfp/nfp_net.h | 10 +- .../net/ethernet/netronome/nfp/nfp_net_common.c | 58 +- drivers/net/ethernet/qlogic/qede/qede_filter.c | 1 - drivers/net/netdevsim/bpf.c | 41 +- drivers/net/netdevsim/netdev.c | 3 +- drivers/net/netdevsim/netdevsim.h | 6 +- drivers/net/tun.c | 1 - drivers/net/virtio_net.c | 1 - include/linux/netdevice.h | 12 +- include/linux/reciprocal_div.h | 68 ++ include/net/xdp.h | 13 + include/uapi/linux/bpf.h | 9 +- include/uapi/linux/if_link.h | 4 + lib/reciprocal_div.c | 41 + net/core/dev.c | 48 +- net/core/rtnetlink.c | 71 +- net/core/xdp.c | 34 + net/ipv4/af_inet.c | 1 + samples/bpf/xdp_redirect_cpu_kern.c | 11 +- tools/bpf/Makefile.helpers | 59 ++ tools/bpf/bpftool/Documentation/Makefile | 13 +- tools/bpf/bpftool/Documentation/bpftool-cgroup.rst | 12 +- tools/bpf/bpftool/Documentation/bpftool-prog.rst | 33 +- tools/bpf/bpftool/Makefile | 6 +- tools/bpf/bpftool/bash-completion/bpftool | 102 +- tools/bpf/bpftool/btf_dumper.c | 251 +++++ tools/bpf/bpftool/cgroup.c | 170 +++- tools/bpf/bpftool/main.h | 34 + tools/bpf/bpftool/map.c | 221 +++- tools/bpf/bpftool/prog.c | 245 ++++- tools/bpf/bpftool/xlated_dumper.c | 6 +- tools/build/Makefile.feature | 1 + tools/build/feature/Makefile | 4 + tools/build/feature/test-reallocarray.c | 8 + tools/include/linux/compiler-gcc.h | 4 + tools/include/linux/overflow.h | 278 +++++ tools/include/tools/libc_compat.h | 20 + tools/include/uapi/linux/bpf.h | 35 +- tools/lib/bpf/Build | 2 +- tools/lib/bpf/Makefile | 6 +- tools/lib/bpf/btf.c | 65 +- tools/lib/bpf/btf.h | 3 + tools/lib/bpf/libbpf.c | 188 ++-- tools/lib/bpf/libbpf.h | 11 + tools/lib/bpf/libbpf_errno.c | 74 ++ tools/testing/selftests/bpf/Makefile | 1 + tools/testing/selftests/bpf/cgroup_helpers.c | 6 +- tools/testing/selftests/bpf/cgroup_helpers.h | 6 +- tools/testing/selftests/bpf/test_offload.py | 81 +- tools/testing/selftests/bpf/test_tcpbpf.h | 1 + tools/testing/selftests/bpf/test_tcpbpf_kern.c | 17 +- tools/testing/selftests/bpf/test_tcpbpf_user.c | 119 +-- 67 files changed, 3119 insertions(+), 929 deletions(-) create mode 100644 tools/bpf/Makefile.helpers create mode 100644 tools/bpf/bpftool/btf_dumper.c create mode 100644 tools/build/feature/test-reallocarray.c create mode 100644 tools/include/linux/overflow.h create mode 100644 tools/include/tools/libc_compat.h create mode 100644 tools/lib/bpf/libbpf_errno.c