From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Nikita V. Shirokov" Subject: Re: [PATCH bpf-next v2 00/11] introduction of bpf_xdp_adjust_tail Date: Tue, 17 Apr 2018 21:44:50 -0700 Message-ID: <20180418044450.GA17737@maindev> References: <20180418042951.17183-1-tehnerd@tehnerd.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Alexei Starovoitov , netdev@vger.kernel.org To: Daniel Borkmann Return-path: Received: from mail-pl0-f44.google.com ([209.85.160.44]:42544 "EHLO mail-pl0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753170AbeDRNY2 (ORCPT ); Wed, 18 Apr 2018 09:24:28 -0400 Received: by mail-pl0-f44.google.com with SMTP id t20-v6so1116936ply.9 for ; Wed, 18 Apr 2018 06:24:28 -0700 (PDT) Content-Disposition: inline In-Reply-To: Sender: netdev-owner@vger.kernel.org List-ID: On Wed, Apr 18, 2018 at 02:37:40PM +0200, Daniel Borkmann wrote: > On 04/18/2018 06:29 AM, Nikita V. Shirokov wrote: > > In this patch series i'm add new bpf helper which allow to manupulate > > xdp's data_end pointer. right now only "shrinking" (reduce packet's size > > by moving pointer) is supported (and i see no use case for "growing"). > > Main use case for such helper is to be able to generate controll (ICMP) > > messages from XDP context. such messages usually contains first N bytes > > from original packets as a payload, and this is exactly what this helper > > would allow us to do (see patch 3 for sample program, where we generate > > ICMP "packet too big" message). This helper could be usefull for load > > balancing applications where after additional encapsulation, resulting > > packet could be bigger then interface MTU. > > Aside from new helper this patch series contains minor changes in device > > drivers (for ones which requires), so they would recal packet's length > > not only when head pointer was adjusted, but if tail's one as well. > > The whole set doesn't have any SoBs from you which is mandatory before > applying anything. Please add. > sorry about that, somehow lost it between v1 and v2 ;) > Thanks, > Daniel > > > v1->v2: > > * fixed kbuild warning > > * made offset eq 0 invalid for xdp_bpf_adjust_tail > > * splitted bpf_prog_test_run fix and selftests in sep commits > > * added SPDX licence where applicable > > * some reshuffling in patches order (tests now in the end) > > > > > > Nikita V. Shirokov (11): > > bpf: making bpf_prog_test run aware of possible data_end ptr change > > bpf: adding tests for bpf_xdp_adjust_tail > > bpf: adding bpf_xdp_adjust_tail helper > > bpf: make generic xdp compatible w/ bpf_xdp_adjust_tail > > bpf: make mlx4 compatible w/ bpf_xdp_adjust_tail > > bpf: make bnxt compatible w/ bpf_xdp_adjust_tail > > bpf: make cavium thunder compatible w/ bpf_xdp_adjust_tail > > bpf: make netronome nfp compatible w/ bpf_xdp_adjust_tail > > bpf: make tun compatible w/ bpf_xdp_adjust_tail > > bpf: make virtio compatible w/ bpf_xdp_adjust_tail > > bpf: add bpf_xdp_adjust_tail sample prog > > > > drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 2 +- > > drivers/net/ethernet/cavium/thunder/nicvf_main.c | 2 +- > > drivers/net/ethernet/mellanox/mlx4/en_rx.c | 2 +- > > .../net/ethernet/netronome/nfp/nfp_net_common.c | 2 +- > > drivers/net/tun.c | 3 +- > > drivers/net/virtio_net.c | 7 +- > > include/uapi/linux/bpf.h | 10 +- > > net/bpf/test_run.c | 3 +- > > net/core/dev.c | 10 +- > > net/core/filter.c | 29 +++- > > samples/bpf/Makefile | 4 + > > samples/bpf/xdp_adjust_tail_kern.c | 152 +++++++++++++++++++++ > > samples/bpf/xdp_adjust_tail_user.c | 142 +++++++++++++++++++ > > tools/include/uapi/linux/bpf.h | 10 +- > > tools/testing/selftests/bpf/Makefile | 2 +- > > tools/testing/selftests/bpf/bpf_helpers.h | 5 + > > tools/testing/selftests/bpf/test_adjust_tail.c | 30 ++++ > > tools/testing/selftests/bpf/test_progs.c | 32 +++++ > > 18 files changed, 435 insertions(+), 12 deletions(-) > > create mode 100644 samples/bpf/xdp_adjust_tail_kern.c > > create mode 100644 samples/bpf/xdp_adjust_tail_user.c > > create mode 100644 tools/testing/selftests/bpf/test_adjust_tail.c > > >