netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [net-next V9 PATCH 00/16] XDP redirect memory return API
@ 2018-04-03 11:07 Jesper Dangaard Brouer
  2018-04-03 11:07 ` [net-next V9 PATCH 01/16] mlx5: basic XDP_REDIRECT forward support Jesper Dangaard Brouer
                   ` (16 more replies)
  0 siblings, 17 replies; 24+ messages in thread
From: Jesper Dangaard Brouer @ 2018-04-03 11:07 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

This is V9, but it's worth mentioning that V8 was send against
net-next, because i40e got XDP_REDIRECT support in-between V6, and it
doesn't exist in bpf-next yet.  Most significant change in V8 was that
page_pool only gets compiled into the kernel when a drivers Kconfig
'select' the feature.

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
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

---

Jesper Dangaard Brouer (16):
      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


 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     |   37 ++
 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                                 |   17 +
 net/core/page_pool.c                              |  317 +++++++++++++++++++++
 net/core/xdp.c                                    |  269 ++++++++++++++++++
 22 files changed, 1093 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-04 13:36 UTC | newest]

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

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).