bpf.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v6 net-nex 0/5] xdp: introduce bulking for page_pool tx return path
@ 2020-11-13 11:48 Lorenzo Bianconi
  2020-11-13 11:48 ` [PATCH v6 net-nex 1/5] net: xdp: introduce bulking for xdp " Lorenzo Bianconi
                   ` (4 more replies)
  0 siblings, 5 replies; 13+ messages in thread
From: Lorenzo Bianconi @ 2020-11-13 11:48 UTC (permalink / raw)
  To: netdev
  Cc: bpf, lorenzo.bianconi, davem, kuba, brouer, ilias.apalodimas,
	john.fastabend

XDP bulk APIs introduce a defer/flush mechanism to return
pages belonging to the same xdp_mem_allocator object
(identified via the mem.id field) in bulk to optimize
I-cache and D-cache since xdp_return_frame is usually run
inside the driver NAPI tx completion loop.
Convert mvneta, mvpp2 and mlx5 drivers to xdp_return_frame_bulk APIs.

More details on benchmarks run on mlx5 can be found here:
https://github.com/xdp-project/xdp-project/blob/master/areas/mem/xdp_bulk_return01.org

Changes since v5:
- do not keep looping over ptr_ring if the cache is full but release leftover
  pages running page_pool_return_page

Changes since v4:
- fix comments
- introduce xdp_frame_bulk_init utility routine
- compiler annotations for I-cache code layout
- move rcu_read_lock outside fast-path
- mlx5 xdp bulking code optimization

Changes since v3:
- align DEV_MAP_BULK_SIZE to XDP_BULK_QUEUE_SIZE
- refactor page_pool_put_page_bulk to avoid code duplication

Changes since v2:
- move mvneta changes in a dedicated patch

Changes since v1:
- improve comments
- rework xdp_return_frame_bulk routine logic
- move count and xa fields at the beginning of xdp_frame_bulk struct
- invert logic in page_pool_put_page_bulk for loop

Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>

Lorenzo Bianconi (5):
  net: xdp: introduce bulking for xdp tx return path
  net: page_pool: add bulk support for ptr_ring
  net: mvneta: add xdp tx return bulking support
  net: mvpp2: add xdp tx return bulking support
  net: mlx5: add xdp tx return bulking support

 drivers/net/ethernet/marvell/mvneta.c         | 10 ++-
 .../net/ethernet/marvell/mvpp2/mvpp2_main.c   | 10 ++-
 .../net/ethernet/mellanox/mlx5/core/en/xdp.c  | 22 ++++--
 include/net/page_pool.h                       | 26 +++++++
 include/net/xdp.h                             | 17 ++++-
 net/core/page_pool.c                          | 70 ++++++++++++++++---
 net/core/xdp.c                                | 54 ++++++++++++++
 7 files changed, 192 insertions(+), 17 deletions(-)

-- 
2.26.2


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

end of thread, other threads:[~2020-11-13 20:59 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-13 11:48 [PATCH v6 net-nex 0/5] xdp: introduce bulking for page_pool tx return path Lorenzo Bianconi
2020-11-13 11:48 ` [PATCH v6 net-nex 1/5] net: xdp: introduce bulking for xdp " Lorenzo Bianconi
2020-11-13 20:03   ` John Fastabend
2020-11-13 20:58   ` Ilias Apalodimas
2020-11-13 11:48 ` [PATCH v6 net-nex 2/5] net: page_pool: add bulk support for ptr_ring Lorenzo Bianconi
2020-11-13 20:05   ` John Fastabend
2020-11-13 20:59   ` Ilias Apalodimas
2020-11-13 11:48 ` [PATCH v6 net-nex 3/5] net: mvneta: add xdp tx return bulking support Lorenzo Bianconi
2020-11-13 20:06   ` John Fastabend
2020-11-13 11:48 ` [PATCH v6 net-nex 4/5] net: mvpp2: " Lorenzo Bianconi
2020-11-13 20:09   ` John Fastabend
2020-11-13 11:48 ` [PATCH v6 net-nex 5/5] net: mlx5: " Lorenzo Bianconi
2020-11-13 20:11   ` John Fastabend

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