All of lore.kernel.org
 help / color / mirror / Atom feed
* [net-next V11 PATCH 00/17] XDP redirect memory return API
@ 2018-04-17 14:45 Jesper Dangaard Brouer
  2018-04-17 14:45 ` [net-next V11 PATCH 01/17] mlx5: basic XDP_REDIRECT forward support Jesper Dangaard Brouer
                   ` (17 more replies)
  0 siblings, 18 replies; 24+ messages in thread
From: Jesper Dangaard Brouer @ 2018-04-17 14:45 UTC (permalink / raw)
  To: netdev, BjörnTöpel, magnus.karlsson
  Cc: eugenia, Jason Wang, John Fastabend, Eran Ben Elisha,
	Saeed Mahameed, galp, Jesper Dangaard Brouer, Daniel Borkmann,
	Alexei Starovoitov, Tariq Toukan

Submitted against net-next, as it contains NIC driver changes.

This patchset works towards supporting different XDP RX-ring memory
allocators.  As this will be needed by the AF_XDP zero-copy mode.

The patchset uses mlx5 as the sample driver, which gets implemented
XDP_REDIRECT RX-mode, but not ndo_xdp_xmit (as this API is subject to
change thought the patchset).

A new struct xdp_frame is introduced (modeled after cpumap xdp_pkt).
And both ndo_xdp_xmit and the new xdp_return_frame end-up using this.

Support for a driver supplied allocator is implemented, and a
refurbished version of page_pool is the first return allocator type
introduced.  This will be a integration point for AF_XDP zero-copy.

The mlx5 driver evolve into using the page_pool, and see a performance
increase (with ndo_xdp_xmit out ixgbe driver) from 6Mpps to 12Mpps.


The patchset stop at 16 patches (one over limit), but more API changes
are planned.  Specifically extending ndo_xdp_xmit and xdp_return_frame
APIs to support bulking.  As this will address some known limits.

V2: Updated according to Tariq's feedback
V3: Updated based on feedback from Jason Wang and Alex Duyck
V4: Updated based on feedback from Tariq and Jason
V5: Fix SPDX license, add Tariq's reviews, improve patch desc for perf test
V6: Updated based on feedback from Eric Dumazet and Alex Duyck
V7: Adapt to i40e that got XDP_REDIRECT support in-between
V8:
 Updated based on feedback kbuild test robot, and adjust for mlx5 changes
 page_pool only compiled into kernel when drivers Kconfig 'select' feature
V9:
 Remove some inline statements, let compiler decide what to inline
 Fix return value in virtio_net driver
 Adjust for mlx5 changes in-between submissions
V10:
 Minor adjust for mlx5 requested by Tariq
 Resubmit against net-next
V11: avoid leaking info stored in frame data on page reuse

---

Jesper Dangaard Brouer (17):
      mlx5: basic XDP_REDIRECT forward support
      xdp: introduce xdp_return_frame API and use in cpumap
      ixgbe: use xdp_return_frame API
      xdp: move struct xdp_buff from filter.h to xdp.h
      xdp: introduce a new xdp_frame type
      tun: convert to use generic xdp_frame and xdp_return_frame API
      virtio_net: convert to use generic xdp_frame and xdp_return_frame API
      bpf: cpumap convert to use generic xdp_frame
      i40e: convert to use generic xdp_frame and xdp_return_frame API
      mlx5: register a memory model when XDP is enabled
      xdp: rhashtable with allocator ID to pointer mapping
      page_pool: refurbish version of page_pool code
      xdp: allow page_pool as an allocator type in xdp_return_frame
      mlx5: use page_pool for xdp_return_frame call
      xdp: transition into using xdp_frame for return API
      xdp: transition into using xdp_frame for ndo_xdp_xmit
      xdp: avoid leaking info stored in frame data on page reuse


 drivers/net/ethernet/intel/i40e/i40e_txrx.c       |   33 ++
 drivers/net/ethernet/intel/i40e/i40e_txrx.h       |    3 
 drivers/net/ethernet/intel/ixgbe/ixgbe.h          |    3 
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c     |   38 ++-
 drivers/net/ethernet/mellanox/mlx5/core/Kconfig   |    1 
 drivers/net/ethernet/mellanox/mlx5/core/en.h      |    4 
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c |   37 ++
 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c   |   42 ++-
 drivers/net/tun.c                                 |   60 ++--
 drivers/net/virtio_net.c                          |   67 +++-
 drivers/vhost/net.c                               |    7 
 include/linux/filter.h                            |   24 --
 include/linux/if_tun.h                            |    4 
 include/linux/netdevice.h                         |    4 
 include/net/page_pool.h                           |  143 +++++++++
 include/net/xdp.h                                 |   83 +++++
 kernel/bpf/cpumap.c                               |  132 +++------
 net/Kconfig                                       |    3 
 net/core/Makefile                                 |    1 
 net/core/filter.c                                 |   25 ++
 net/core/page_pool.c                              |  317 +++++++++++++++++++++
 net/core/xdp.c                                    |  269 ++++++++++++++++++
 22 files changed, 1102 insertions(+), 198 deletions(-)
 create mode 100644 include/net/page_pool.h
 create mode 100644 net/core/page_pool.c

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2018-04-17 16:27 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-04-17 14:45 [net-next V11 PATCH 00/17] XDP redirect memory return API Jesper Dangaard Brouer
2018-04-17 14:45 ` [net-next V11 PATCH 01/17] mlx5: basic XDP_REDIRECT forward support Jesper Dangaard Brouer
2018-04-17 14:45 ` [net-next V11 PATCH 02/17] xdp: introduce xdp_return_frame API and use in cpumap Jesper Dangaard Brouer
2018-04-17 14:45 ` [net-next V11 PATCH 03/17] ixgbe: use xdp_return_frame API Jesper Dangaard Brouer
2018-04-17 14:45 ` [net-next V11 PATCH 04/17] xdp: move struct xdp_buff from filter.h to xdp.h Jesper Dangaard Brouer
2018-04-17 14:45 ` [net-next V11 PATCH 05/17] xdp: introduce a new xdp_frame type Jesper Dangaard Brouer
2018-04-17 14:45 ` [net-next V11 PATCH 06/17] tun: convert to use generic xdp_frame and xdp_return_frame API Jesper Dangaard Brouer
2018-04-17 14:45 ` [net-next V11 PATCH 07/17] virtio_net: " Jesper Dangaard Brouer
2018-04-17 14:45 ` [net-next V11 PATCH 08/17] bpf: cpumap convert to use generic xdp_frame Jesper Dangaard Brouer
2018-04-17 14:46 ` [net-next V11 PATCH 09/17] i40e: convert to use generic xdp_frame and xdp_return_frame API Jesper Dangaard Brouer
2018-04-17 14:46 ` [net-next V11 PATCH 10/17] mlx5: register a memory model when XDP is enabled Jesper Dangaard Brouer
2018-04-17 14:46 ` [net-next V11 PATCH 11/17] xdp: rhashtable with allocator ID to pointer mapping Jesper Dangaard Brouer
2018-04-17 14:46 ` [net-next V11 PATCH 12/17] page_pool: refurbish version of page_pool code Jesper Dangaard Brouer
2018-04-17 14:46 ` [net-next V11 PATCH 13/17] xdp: allow page_pool as an allocator type in xdp_return_frame Jesper Dangaard Brouer
2018-04-17 14:46 ` [net-next V11 PATCH 14/17] mlx5: use page_pool for xdp_return_frame call Jesper Dangaard Brouer
2018-04-17 14:46 ` [net-next V11 PATCH 15/17] xdp: transition into using xdp_frame for return API Jesper Dangaard Brouer
2018-04-17 14:46 ` [net-next V11 PATCH 16/17] xdp: transition into using xdp_frame for ndo_xdp_xmit Jesper Dangaard Brouer
2018-04-17 14:46 ` [net-next V11 PATCH 17/17] xdp: avoid leaking info stored in frame data on page reuse Jesper Dangaard Brouer
2018-04-17 15:04   ` Daniel Borkmann
2018-04-17 14:48 ` [net-next V11 PATCH 00/17] XDP redirect memory return API Alexei Starovoitov
2018-04-17 15:18   ` David Miller
2018-04-17 15:24     ` Daniel Borkmann
2018-04-17 15:35       ` David Miller
2018-04-17 16:27         ` Jesper Dangaard Brouer

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.