bpf.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
  • [parent not found: <20200710224924.4087399-5-andriin@fb.com>]
  • * [PATCH bpf-next 0/7] BPF XDP link
    @ 2020-07-13  5:12 Andrii Nakryiko
      2020-07-13  5:12 ` [PATCH bpf-next 2/7] bpf, xdp: add bpf_link-based XDP attachment API Andrii Nakryiko
      0 siblings, 1 reply; 15+ messages in thread
    From: Andrii Nakryiko @ 2020-07-13  5:12 UTC (permalink / raw)
      To: bpf, netdev, ast, daniel
      Cc: andrii.nakryiko, kernel-team, Andrii Nakryiko, Andrey Ignatov,
    	Takshak Chahande
    
    Following cgroup and netns examples, implement bpf_link support for XDP.
    
    The semantics is described in patch #2. Program and link attachments are
    mutually exclusive, in the sense that neither link can replace attached
    program, nor program can replace attached link. Link can't replace attached
    link as well, as is the case for any other bpf_link implementation.
    
    Patch #1 refactors existing BPF program-based attachment API and centralizes
    high-level query/attach decisions in generic kernel code, while drivers are
    kept simple and are instructed with low-level decisions about attaching and
    detaching specific bpf_prog. This also makes QUERY command unnecessary, and
    patch #7 removes support for it from all kernel drivers. If that's a bad idea,
    we can drop that patch altogether.
    
    With refactoring in patch #1, adding bpf_xdp_link is completely transparent to
    drivers, they are still functioning at the level of "effective" bpf_prog, that
    should be called in XDP data path.
    
    Corresponding libbpf support for BPF XDP link is added in patch #5.
    
    Cc: Andrey Ignatov <rdna@fb.com>
    Cc: Takshak Chahande <ctakshak@fb.com>
    
    Andrii Nakryiko (7):
      bpf, xdp: maintain info on attached XDP BPF programs in net_device
      bpf, xdp: add bpf_link-based XDP attachment API
      bpf, xdp: implement LINK_UPDATE for BPF XDP link
      bpf: implement BPF XDP link-specific introspection APIs
      libbpf: add support for BPF XDP link
      selftests/bpf: add BPF XDP link selftests
      bpf, xdp: remove XDP_QUERY_PROG and XDP_QUERY_PROG_HW XDP commands
    
     drivers/net/ethernet/amazon/ena/ena_netdev.c  |   4 -
     drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c |   4 -
     .../net/ethernet/cavium/thunder/nicvf_main.c  |   3 -
     .../net/ethernet/freescale/dpaa2/dpaa2-eth.c  |   3 -
     drivers/net/ethernet/intel/i40e/i40e_main.c   |   3 -
     drivers/net/ethernet/intel/ice/ice_main.c     |   3 -
     drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |   4 -
     .../net/ethernet/intel/ixgbevf/ixgbevf_main.c |   4 -
     drivers/net/ethernet/marvell/mvneta.c         |   3 -
     .../net/ethernet/marvell/mvpp2/mvpp2_main.c   |   3 -
     .../net/ethernet/mellanox/mlx4/en_netdev.c    |  24 -
     .../net/ethernet/mellanox/mlx5/core/en_main.c |  18 -
     .../ethernet/netronome/nfp/nfp_net_common.c   |   4 -
     .../net/ethernet/qlogic/qede/qede_filter.c    |   3 -
     drivers/net/ethernet/sfc/efx.c                |   4 -
     drivers/net/ethernet/socionext/netsec.c       |   3 -
     drivers/net/ethernet/ti/cpsw_priv.c           |   3 -
     drivers/net/hyperv/netvsc_bpf.c               |  21 +-
     drivers/net/netdevsim/bpf.c                   |   4 -
     drivers/net/netdevsim/netdevsim.h             |   2 +-
     drivers/net/tun.c                             |   3 -
     drivers/net/veth.c                            |  15 -
     drivers/net/virtio_net.c                      |  17 -
     drivers/net/xen-netfront.c                    |  21 -
     include/linux/netdevice.h                     |  31 +-
     include/net/xdp.h                             |   2 -
     include/uapi/linux/bpf.h                      |  10 +-
     kernel/bpf/syscall.c                          |   5 +
     net/core/dev.c                                | 510 +++++++++++++-----
     net/core/rtnetlink.c                          |   5 +-
     net/core/xdp.c                                |   9 -
     tools/include/uapi/linux/bpf.h                |  10 +-
     tools/lib/bpf/libbpf.c                        |   9 +-
     tools/lib/bpf/libbpf.h                        |   2 +
     tools/lib/bpf/libbpf.map                      |   1 +
     .../selftests/bpf/prog_tests/section_names.c  |   2 +-
     .../selftests/bpf/prog_tests/xdp_link.c       | 137 +++++
     .../selftests/bpf/progs/test_xdp_link.c       |  12 +
     38 files changed, 590 insertions(+), 331 deletions(-)
     create mode 100644 tools/testing/selftests/bpf/prog_tests/xdp_link.c
     create mode 100644 tools/testing/selftests/bpf/progs/test_xdp_link.c
    
    -- 
    2.24.1
    
    
    ^ permalink raw reply	[flat|nested] 15+ messages in thread

    end of thread, other threads:[~2020-07-22  6:45 UTC | newest]
    
    Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
    -- links below jump to the message on this page --
         [not found] <20200710224924.4087399-1-andriin@fb.com>
         [not found] ` <20200710224924.4087399-3-andriin@fb.com>
    2020-07-13 14:19   ` [PATCH bpf-next 2/7] bpf, xdp: add bpf_link-based XDP attachment API David Ahern
    2020-07-13 22:33     ` Andrii Nakryiko
    2020-07-14 13:57   ` Toke Høiland-Jørgensen
    2020-07-14 18:59     ` Andrii Nakryiko
    2020-07-14 20:12       ` Toke Høiland-Jørgensen
    2020-07-14 20:37         ` Andrii Nakryiko
    2020-07-14 21:41           ` Toke Høiland-Jørgensen
    2020-07-14 22:26             ` Andrii Nakryiko
    2020-07-15 15:48               ` Toke Høiland-Jørgensen
    2020-07-15 20:54                 ` Andrii Nakryiko
    2020-07-16 10:52                   ` Toke Høiland-Jørgensen
    2020-07-22  6:45                     ` Andrii Nakryiko
         [not found] ` <20200710224924.4087399-5-andriin@fb.com>
    2020-07-13 14:32   ` [PATCH bpf-next 4/7] bpf: implement BPF XDP link-specific introspection APIs David Ahern
    2020-07-13 22:41     ` Andrii Nakryiko
    2020-07-13  5:12 [PATCH bpf-next 0/7] BPF XDP link Andrii Nakryiko
    2020-07-13  5:12 ` [PATCH bpf-next 2/7] bpf, xdp: add bpf_link-based XDP attachment API Andrii Nakryiko
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox;
    as well as URLs for NNTP newsgroup(s).