Hi David, The following pull-request contains BPF updates for your *net-next* tree. There is a minor merge conflict in mlx5 due to 8960b38932be ("linux/dim: Rename externally used net_dim members") which has been pulled into your tree in the meantime, but resolution seems not that bad ... getting current bpf-next out now before there's coming more on mlx5. ;) I'm Cc'ing Saeed just so he's aware of the resolution below: ** First conflict in drivers/net/ethernet/mellanox/mlx5/core/en_main.c: <<<<<<< HEAD static int mlx5e_open_cq(struct mlx5e_channel *c, struct dim_cq_moder moder, struct mlx5e_cq_param *param, struct mlx5e_cq *cq) ======= int mlx5e_open_cq(struct mlx5e_channel *c, struct net_dim_cq_moder moder, struct mlx5e_cq_param *param, struct mlx5e_cq *cq) >>>>>>> e5a3e259ef239f443951d401db10db7d426c9497 Resolution is to take the second chunk and rename net_dim_cq_moder into dim_cq_moder. Also the signature for mlx5e_open_cq() in ... drivers/net/ethernet/mellanox/mlx5/core/en.h +977 ... and in mlx5e_open_xsk() ... drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c +64 ... needs the same rename from net_dim_cq_moder into dim_cq_moder. ** Second conflict in drivers/net/ethernet/mellanox/mlx5/core/en_main.c: <<<<<<< HEAD int cpu = cpumask_first(mlx5_comp_irq_get_affinity_mask(priv->mdev, ix)); struct dim_cq_moder icocq_moder = {0, 0}; struct net_device *netdev = priv->netdev; struct mlx5e_channel *c; unsigned int irq; ======= struct net_dim_cq_moder icocq_moder = {0, 0}; >>>>>>> e5a3e259ef239f443951d401db10db7d426c9497 Take the second chunk and rename net_dim_cq_moder into dim_cq_moder as well. Let me know if you run into any issues. Anyway, the main changes are: 1) Long-awaited AF_XDP support for mlx5e driver, from Maxim. 2) Addition of two new per-cgroup BPF hooks for getsockopt and setsockopt along with a new sockopt program type which allows more fine-grained pass/reject settings for containers. Also add a sock_ops callback that can be selectively enabled on a per-socket basis and is executed for every RTT to help tracking TCP statistics, both features from Stanislav. 3) Follow-up fix from loops in precision tracking which was not propagating precision marks and as a result verifier assumed that some branches were not taken and therefore wrongly removed as dead code, from Alexei. 4) Fix BPF cgroup release synchronization race which could lead to a double-free if a leaf's cgroup_bpf object is released and a new BPF program is attached to the one of ancestor cgroups in parallel, from Roman. 5) Support for bulking XDP_TX on veth devices which improves performance in some cases by around 9%, from Toshiaki. 6) Allow for lookups into BPF devmap and improve feedback when calling into bpf_redirect_map() as lookup is now performed right away in the helper itself, from Toke. 7) Add support for fq's Earliest Departure Time to the Host Bandwidth Manager (HBM) sample BPF program, from Lawrence. 8) Various cleanups and minor fixes all over the place from many others. 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 7d30a7f6424e88c958c19a02f6f54ab8d25919cd: Merge branch 'ipv6-avoid-taking-refcnt-on-dst-during-route-lookup' (2019-06-23 13:24:17 -0700) 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 e5a3e259ef239f443951d401db10db7d426c9497: Merge branch 'bpf-tcp-rtt-hook' (2019-07-03 16:52:03 +0200) ---------------------------------------------------------------- Alexei Starovoitov (2): Merge branch 'bpf-sockopt-hooks' bpf: fix precision tracking Andrii Nakryiko (2): selftests/bpf: build tests with debug info libbpf: fix GCC8 warning for strncpy Colin Ian King (1): libbpf: fix spelling mistake "conflictling" -> "conflicting" Daniel Borkmann (3): Merge branch 'bpf-af-xdp-mlx5e' Merge branch 'bpf-lookup-devmap' Merge branch 'bpf-tcp-rtt-hook' Daniel T. Lee (1): samples: bpf: make the use of xdp samples consistent Eric Leblond (1): xsk: sample kernel code is now in libbpf Ivan Khoronzhuk (1): libbpf: fix max() type mismatch for 32bit Jiri Benc (1): selftests: bpf: standardize to static __always_inline Leo Yan (1): bpf, libbpf, smatch: Fix potential NULL pointer dereference Maxim Mikityanskiy (16): net/mlx5e: Attach/detach XDP program safely xsk: Add API to check for available entries in FQ xsk: Add getsockopt XDP_OPTIONS libbpf: Support getsockopt XDP_OPTIONS xsk: Change the default frame size to 4096 and allow controlling it xsk: Return the whole xdp_desc from xsk_umem_consume_tx net/mlx5e: Replace deprecated PCI_DMA_TODEVICE net/mlx5e: Calculate linear RX frag size considering XSK net/mlx5e: Allow ICO SQ to be used by multiple RQs net/mlx5e: Refactor struct mlx5e_xdp_info net/mlx5e: Share the XDP SQ for XDP_TX between RQs net/mlx5e: XDP_TX from UMEM support net/mlx5e: Consider XSK in XDP MTU limit calculation net/mlx5e: Encapsulate open/close queues into a function net/mlx5e: Move queue param structs to en/params.h net/mlx5e: Add XSK zero-copy support Michal Rostecki (1): samples: bpf: Remove bpf_debug macro in favor of bpf_printk Roman Gushchin (1): bpf: fix cgroup bpf release synchronization Stanislav Fomichev (18): bpf: implement getsockopt and setsockopt hooks bpf: sync bpf.h to tools/ libbpf: support sockopt hooks selftests/bpf: test sockopt section name selftests/bpf: add sockopt test selftests/bpf: add sockopt test that exercises sk helpers selftests/bpf: add sockopt test that exercises BPF_F_ALLOW_MULTI bpf: add sockopt documentation bpftool: support cgroup sockopt selftests/bpf: fix -Wstrict-aliasing in test_sockopt_sk.c bpf: add BPF_CGROUP_SOCK_OPS callback that is executed on every RTT bpf: split shared bpf_tcp_sock and bpf_sock_ops implementation bpf: add dsack_dups/delivered{, _ce} to bpf_tcp_sock bpf: add icsk_retransmits to bpf_tcp_sock bpf/tools: sync bpf.h selftests/bpf: test BPF_SOCK_OPS_RTT_CB samples/bpf: add sample program that periodically dumps TCP stats samples/bpf: fix tcp_bpf.readme detach command Toke Høiland-Jørgensen (5): xskmap: Move non-standard list manipulation to helper devmap/cpumap: Use flush list instead of bitmap devmap: Rename ifindex member in bpf_redirect_info bpf_xdp_redirect_map: Perform map lookup in eBPF helper devmap: Allow map lookups from eBPF Toshiaki Makita (3): selftests, bpf: Add test for veth native XDP xdp: Add tracepoint for bulk XDP_TX veth: Support bulk XDP_TX Yonghong Song (1): bpf: fix compiler warning with CONFIG_MODULES=n YueHaibing (1): xdp: Make __mem_id_disconnect static brakmo (1): bpf: Add support for fq's EDT to HBM Documentation/bpf/index.rst | 1 + Documentation/bpf/prog_cgroup_sockopt.rst | 93 ++ Documentation/networking/af_xdp.rst | 16 +- drivers/net/ethernet/intel/i40e/i40e_xsk.c | 12 +- drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 15 +- drivers/net/ethernet/mellanox/mlx5/core/Makefile | 2 +- drivers/net/ethernet/mellanox/mlx5/core/en.h | 155 ++- .../net/ethernet/mellanox/mlx5/core/en/params.c | 108 ++- .../net/ethernet/mellanox/mlx5/core/en/params.h | 118 ++- drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c | 231 +++-- drivers/net/ethernet/mellanox/mlx5/core/en/xdp.h | 36 +- .../ethernet/mellanox/mlx5/core/en/xsk/Makefile | 1 + .../net/ethernet/mellanox/mlx5/core/en/xsk/rx.c | 192 ++++ .../net/ethernet/mellanox/mlx5/core/en/xsk/rx.h | 27 + .../net/ethernet/mellanox/mlx5/core/en/xsk/setup.c | 223 +++++ .../net/ethernet/mellanox/mlx5/core/en/xsk/setup.h | 25 + .../net/ethernet/mellanox/mlx5/core/en/xsk/tx.c | 111 +++ .../net/ethernet/mellanox/mlx5/core/en/xsk/tx.h | 15 + .../net/ethernet/mellanox/mlx5/core/en/xsk/umem.c | 267 +++++ .../net/ethernet/mellanox/mlx5/core/en/xsk/umem.h | 31 + .../net/ethernet/mellanox/mlx5/core/en_ethtool.c | 25 +- .../ethernet/mellanox/mlx5/core/en_fs_ethtool.c | 18 +- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 730 +++++++++----- drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 12 +- drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 104 +- drivers/net/ethernet/mellanox/mlx5/core/en_stats.c | 115 ++- drivers/net/ethernet/mellanox/mlx5/core/en_stats.h | 30 + drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c | 42 +- .../net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c | 14 +- drivers/net/ethernet/mellanox/mlx5/core/wq.h | 5 - drivers/net/veth.c | 60 +- include/linux/bpf-cgroup.h | 45 + include/linux/bpf.h | 2 + include/linux/bpf_types.h | 1 + include/linux/filter.h | 13 +- include/linux/list.h | 14 + include/net/tcp.h | 8 + include/net/xdp_sock.h | 27 +- include/trace/events/xdp.h | 34 +- include/uapi/linux/bpf.h | 33 +- include/uapi/linux/if_xdp.h | 8 + kernel/bpf/cgroup.c | 352 ++++++- kernel/bpf/core.c | 10 + kernel/bpf/cpumap.c | 105 +- kernel/bpf/devmap.c | 112 +-- kernel/bpf/syscall.c | 19 + kernel/bpf/verifier.c | 136 ++- kernel/bpf/xskmap.c | 3 +- kernel/trace/bpf_trace.c | 27 +- net/core/filter.c | 269 ++++-- net/core/xdp.c | 2 +- net/ipv4/tcp_input.c | 4 + net/socket.c | 30 + net/xdp/xsk.c | 36 +- net/xdp/xsk_queue.h | 14 + samples/bpf/Makefile | 3 + samples/bpf/do_hbm_test.sh | 22 +- samples/bpf/hbm.c | 18 +- samples/bpf/hbm_edt_kern.c | 168 ++++ samples/bpf/hbm_kern.h | 40 +- samples/bpf/ibumad_kern.c | 18 +- samples/bpf/tcp_bpf.readme | 2 +- samples/bpf/tcp_dumpstats_kern.c | 68 ++ samples/bpf/xdp_adjust_tail_user.c | 12 +- samples/bpf/xdp_redirect_map_user.c | 15 +- samples/bpf/xdp_redirect_user.c | 15 +- samples/bpf/xdp_tx_iptunnel_user.c | 12 +- samples/bpf/xdpsock_user.c | 44 +- tools/bpf/bpftool/Documentation/bpftool-cgroup.rst | 7 +- tools/bpf/bpftool/Documentation/bpftool-prog.rst | 3 +- tools/bpf/bpftool/bash-completion/bpftool | 9 +- tools/bpf/bpftool/cgroup.c | 5 +- tools/bpf/bpftool/main.h | 1 + tools/bpf/bpftool/prog.c | 3 +- tools/include/uapi/linux/bpf.h | 26 +- tools/include/uapi/linux/if_xdp.h | 8 + tools/lib/bpf/libbpf.c | 23 +- tools/lib/bpf/libbpf_probes.c | 1 + tools/lib/bpf/xsk.c | 15 +- tools/lib/bpf/xsk.h | 2 +- tools/testing/selftests/bpf/.gitignore | 3 + tools/testing/selftests/bpf/Makefile | 10 +- tools/testing/selftests/bpf/progs/pyperf.h | 9 +- tools/testing/selftests/bpf/progs/sockopt_multi.c | 71 ++ tools/testing/selftests/bpf/progs/sockopt_sk.c | 111 +++ tools/testing/selftests/bpf/progs/strobemeta.h | 36 +- tools/testing/selftests/bpf/progs/tcp_rtt.c | 61 ++ tools/testing/selftests/bpf/progs/test_jhash.h | 3 +- tools/testing/selftests/bpf/progs/test_seg6_loop.c | 23 +- .../selftests/bpf/progs/test_verif_scale2.c | 2 +- .../testing/selftests/bpf/progs/xdp_redirect_map.c | 31 + tools/testing/selftests/bpf/progs/xdp_tx.c | 12 + tools/testing/selftests/bpf/test_section_names.c | 10 + tools/testing/selftests/bpf/test_sockopt.c | 1021 ++++++++++++++++++++ tools/testing/selftests/bpf/test_sockopt_multi.c | 374 +++++++ tools/testing/selftests/bpf/test_sockopt_sk.c | 211 ++++ tools/testing/selftests/bpf/test_tcp_rtt.c | 254 +++++ tools/testing/selftests/bpf/test_xdp_veth.sh | 118 +++ 98 files changed, 6197 insertions(+), 841 deletions(-) create mode 100644 Documentation/bpf/prog_cgroup_sockopt.rst create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/Makefile create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.h create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.h create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/tx.c create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/tx.h create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/umem.c create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/umem.h create mode 100644 samples/bpf/hbm_edt_kern.c create mode 100644 samples/bpf/tcp_dumpstats_kern.c create mode 100644 tools/testing/selftests/bpf/progs/sockopt_multi.c create mode 100644 tools/testing/selftests/bpf/progs/sockopt_sk.c create mode 100644 tools/testing/selftests/bpf/progs/tcp_rtt.c create mode 100644 tools/testing/selftests/bpf/progs/xdp_redirect_map.c create mode 100644 tools/testing/selftests/bpf/progs/xdp_tx.c create mode 100644 tools/testing/selftests/bpf/test_sockopt.c create mode 100644 tools/testing/selftests/bpf/test_sockopt_multi.c create mode 100644 tools/testing/selftests/bpf/test_sockopt_sk.c create mode 100644 tools/testing/selftests/bpf/test_tcp_rtt.c create mode 100755 tools/testing/selftests/bpf/test_xdp_veth.sh