Hi David, The following pull-request contains BPF updates for your *net-next* tree.
The main changes are: 1) Extend BTF to support function call types and improve the BPF symbol handling with this info for kallsyms and bpftool program dump to make debugging easier, from Martin and Yonghong. 2) Optimize LPM lookups by making longest_prefix_match() handle multiple bytes at a time, from Eric. 3) Adds support for loading and attaching flow dissector BPF progs from bpftool, from Stanislav. 4) Extend the sk_lookup() helper to be supported from XDP, from Nitin. 5) Enable verifier to support narrow context loads with offset > 0 to adapt to LLVM code generation (currently only offset of 0 was supported). Add test cases as well, from Andrey. 6) Simplify passing device functions for offloaded BPF progs by adding callbacks to bpf_prog_offload_ops instead of ndo_bpf. Also convert nfp and netdevsim to make use of them, from Quentin. 7) Add support for sock_ops based BPF programs to send events to the perf ring-buffer through perf_event_output helper, from Sowmini and Daniel. 8) Add read / write support for skb->tstamp from tc BPF and cg BPF programs to allow for supporting rate-limiting in EDT qdiscs like fq from BPF side, from Vlad. 9) Extend libbpf API to support map in map types and add test cases for it as well to BPF kselftests, from Nikita. 10) Account the maximum packet offset accessed by a BPF program in the verifier and use it for optimizing nfp JIT, from Jiong. 11) Fix error handling regarding kprobe_events in BPF sample loader, from Daniel T. 12) Add support for queue and stack map type in bpftool, from David. Please consider pulling these changes from: git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git Note, there is a tiny merge conflict in BPF's kselftest Makefile. Resolution is to take both chunks, like: [...] test_sk_lookup_kern.o test_xdp_vlan.o test_queue_map.o test_stack_map.o \ xdp_dummy.o test_map_in_map.o Thanks a lot! ---------------------------------------------------------------- The following changes since commit f601a85bd7883708f48911d8c88e69fe5bde2b4d: net: hns3: Remove set but not used variable 'reset_level' (2018-11-07 11:46:37 -0800) 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 ffac28f95a98a87db0850801cd98771a08bb1dec: bpf: align map type names formatting. (2018-11-26 01:31:16 +0100) ---------------------------------------------------------------- Alexei Starovoitov (5): Merge branch 'device-ops-as-cb' Merge branch 'bpftool-flow-dissector' Merge branch 'narrow-loads' Merge branch 'socket-lookup-cg_sock' Merge branch 'btf-func-info' Andrey Ignatov (6): bpf: Allow narrow loads with offset > 0 selftests/bpf: Test narrow loads with off > 0 in test_verifier selftests/bpf: Test narrow loads with off > 0 for bpf_sock_addr bpf: Fix IPv6 dport byte order in bpf_sk_lookup_udp bpf: Support socket lookup in CGROUP_SOCK_ADDR progs selftest/bpf: Use bpf_sk_lookup_{tcp, udp} in test_sock_addr Colin Ian King (3): bpf: fix null pointer dereference on pointer offload tools/bpf: fix spelling mistake "memeory" -> "memory" bpf: btf: fix spelling mistake "Memmber" -> "Member" Daniel Borkmann (3): Merge branch 'bpf-max-pkt-offset' Merge branch 'bpf-zero-hash-seed' Merge branch 'bpf-libbpf-mapinmap' Daniel T. Lee (1): samples: bpf: fix: error handling regarding kprobe_events David Ahern (1): bpftool: Improve handling of ENOENT on map dumps David Calavera (2): bpf: Add BPF_MAP_TYPE_QUEUE and BPF_MAP_TYPE_STACK to bpftool-map bpf: align map type names formatting. Eric Dumazet (1): bpf, lpm: make longest_prefix_match() faster Jiong Wang (2): bpf: let verifier to calculate and record max_pkt_offset nfp: bpf: relax prog rejection through max_pkt_offset Joe Stringer (1): selftests/bpf: Fix uninitialized duration warning Lorenz Bauer (4): bpf: allow zero-initializing hash map seed bpf: move BPF_F_QUERY_EFFECTIVE after map flags tools: sync linux/bpf.h tools: add selftest for BPF_F_ZERO_SEED Martin KaFai Lau (5): bpf: libbpf: Fix bpf_program__next() API bpf: btf: Break up btf_type_is_void() bpf: btf: Add BTF_KIND_FUNC and BTF_KIND_FUNC_PROTO tools/bpf: Sync kernel btf.h header tools/bpf: Add tests for BTF_KIND_FUNC_PROTO and BTF_KIND_FUNC Nathan Chancellor (1): bpf: Remove unused variable in nsim_bpf Nikita V. Shirokov (3): bpf: adding support for map in map in libbpf bpf: adding tests for map_in_map helpber in libbpf libbpf: make bpf_object__open default to UNSPEC Nitin Hande (1): bpf: Extend the sk_lookup() helper to XDP hookpoint. Quentin Monnet (11): selftests/bpf: enable (uncomment) all tests in test_libbpf.sh tools: bpftool: adjust rlimit RLIMIT_MEMLOCK when loading programs, maps nfp: bpf: move nfp_bpf_analyzer_ops from verifier.c to offload.c bpf: pass a struct with offload callbacks to bpf_offload_dev_create() bpf: call verify_insn from its callback in struct bpf_offload_dev bpf: call finalize() from its callback in struct bpf_offload_dev bpf: call verifier_prep from its callback in struct bpf_offload_dev bpf: pass translate() as a callback and remove its ndo_bpf subcommand bpf: pass destroy() as a callback and remove its ndo_bpf subcommand bpf: pass prog instead of env to bpf_prog_offload_verifier_prep() bpf: do not pass netdev to translate() and prepare() offload callbacks Rustam Kovhaev (1): bpf, tags: Fix DEFINE_PER_CPU expansion Shannon Nelson (1): bpf_load: add map name to load_maps error message Sowmini Varadhan (2): bpf: add perf event notificaton support for sock_ops selftests/bpf: add a test case for sock_ops perf-event notification Stanislav Fomichev (13): selftests/bpf: rename flow dissector section to flow_dissector libbpf: cleanup after partial failure in bpf_object__pin libbpf: bpf_program__pin: add special case for instances.nr == 1 libbpf: add internal pin_name bpftool: add loadall command bpftool: add pinmaps argument to the load/loadall bpftool: support loading flow dissector bpftool: make libbfd optional bpf: libbpf: retry map creation without the name libbpf: make sure bpf headers are c++ include-able bpf, libbpf: introduce bpf_object__probe_caps to test BPF capabilities bpf: libbpf: remove map name retry from bpf_create_map_xattr bpf: libbpf: don't specify prog name if kernel doesn't support it Vlad Dumitrescu (1): bpf: add skb->tstamp r/w access from tc clsact and cg skb progs Yonghong Song (11): bpf: Introduce bpf_func_info tools/bpf: sync kernel uapi bpf.h header to tools directory tools/bpf: add new fields for program load in lib/bpf tools/bpf: extends test_btf to test load/retrieve func_type info tools/bpf: add support to read .BTF.ext sections tools/bpf: do not use pahole if clang/llvm can generate BTF sections tools/bpf: refactor to implement btf_get_from_id() in lib/bpf tools/bpf: enhance test_btf file testing to test func info tools/bpf: bpftool: add support for func types bpf: fix a compilation error when CONFIG_BPF_SYSCALL is not defined bpf: fix a libbpf loader issue drivers/net/ethernet/netronome/nfp/bpf/main.c | 2 +- drivers/net/ethernet/netronome/nfp/bpf/main.h | 6 +- drivers/net/ethernet/netronome/nfp/bpf/offload.c | 43 +- drivers/net/ethernet/netronome/nfp/bpf/verifier.c | 11 +- drivers/net/netdevsim/bpf.c | 52 +- include/linux/bpf.h | 14 +- include/linux/bpf_verifier.h | 3 +- include/linux/btf.h | 16 + include/linux/filter.h | 16 +- include/linux/netdevice.h | 12 - include/uapi/linux/bpf.h | 27 +- include/uapi/linux/btf.h | 18 +- kernel/bpf/btf.c | 422 ++++++++-- kernel/bpf/core.c | 13 + kernel/bpf/hashtab.c | 13 +- kernel/bpf/local_storage.c | 3 +- kernel/bpf/lpm_trie.c | 59 +- kernel/bpf/offload.c | 76 +- kernel/bpf/syscall.c | 59 +- kernel/bpf/verifier.c | 155 +++- net/core/filter.c | 206 ++++- samples/bpf/Makefile | 8 + samples/bpf/bpf_load.c | 37 +- tools/bpf/bpftool/Documentation/bpftool-map.rst | 3 +- tools/bpf/bpftool/Documentation/bpftool-prog.rst | 42 +- tools/bpf/bpftool/Makefile | 13 +- tools/bpf/bpftool/bash-completion/bpftool | 21 +- tools/bpf/bpftool/btf_dumper.c | 136 +++ tools/bpf/bpftool/common.c | 39 +- tools/bpf/bpftool/jit_disasm.c | 8 +- tools/bpf/bpftool/main.c | 3 - tools/bpf/bpftool/main.h | 19 + tools/bpf/bpftool/map.c | 132 +-- tools/bpf/bpftool/prog.c | 244 ++++-- tools/bpf/bpftool/xlated_dumper.c | 33 + tools/bpf/bpftool/xlated_dumper.h | 3 + tools/include/uapi/linux/bpf.h | 27 +- tools/include/uapi/linux/btf.h | 18 +- tools/lib/bpf/Makefile | 15 +- tools/lib/bpf/bpf.c | 50 +- tools/lib/bpf/bpf.h | 13 + tools/lib/bpf/btf.c | 347 ++++++++ tools/lib/bpf/btf.h | 59 ++ tools/lib/bpf/libbpf.c | 555 +++++++++++-- tools/lib/bpf/libbpf.h | 29 + tools/lib/bpf/test_libbpf.cpp | 18 + tools/testing/selftests/bpf/Makefile | 25 +- tools/testing/selftests/bpf/bpf_flow.c | 2 +- tools/testing/selftests/bpf/connect4_prog.c | 43 +- tools/testing/selftests/bpf/connect6_prog.c | 56 +- tools/testing/selftests/bpf/test_btf.c | 923 ++++++++++++++++++++- tools/testing/selftests/bpf/test_btf_haskv.c | 16 +- tools/testing/selftests/bpf/test_btf_nokv.c | 16 +- tools/testing/selftests/bpf/test_flow_dissector.sh | 2 +- tools/testing/selftests/bpf/test_libbpf.sh | 14 +- tools/testing/selftests/bpf/test_map_in_map.c | 49 ++ tools/testing/selftests/bpf/test_maps.c | 154 +++- tools/testing/selftests/bpf/test_progs.c | 2 +- tools/testing/selftests/bpf/test_sock_addr.c | 28 +- tools/testing/selftests/bpf/test_tcpnotify.h | 19 + tools/testing/selftests/bpf/test_tcpnotify_kern.c | 95 +++ tools/testing/selftests/bpf/test_tcpnotify_user.c | 186 +++++ tools/testing/selftests/bpf/test_verifier.c | 77 +- 63 files changed, 4209 insertions(+), 596 deletions(-) create mode 100644 tools/lib/bpf/test_libbpf.cpp create mode 100644 tools/testing/selftests/bpf/test_map_in_map.c create mode 100644 tools/testing/selftests/bpf/test_tcpnotify.h create mode 100644 tools/testing/selftests/bpf/test_tcpnotify_kern.c create mode 100644 tools/testing/selftests/bpf/test_tcpnotify_user.c