mbox series

[v5,net-next,0/7] add XDP support to mvneta driver

Message ID cover.1571472169.git.lorenzo@kernel.org
Headers show
Series add XDP support to mvneta driver | expand

Message

Lorenzo Bianconi Oct. 19, 2019, 8:13 a.m. UTC
Add XDP support to mvneta driver for devices that rely on software
buffer management. Supported verdicts are:
- XDP_DROP
- XDP_PASS
- XDP_REDIRECT
- XDP_TX
Moreover set ndo_xdp_xmit net_device_ops function pointer in order
to support redirecting from other device (e.g. virtio-net).
Convert mvneta driver to page_pool API.
This series is based on previous work done by Jesper and Ilias.
We will send follow-up patches to reduce DMA-sync operations.

Changes since v4:
- reset page_pool pointer to NULL in mvneta_rxq_drop_pkts and in
  mvneta_create_page_pool error path
- move dma sync in mvneta_rx_refill() in patch 2/7
- verify bpf prog pointer in mvneta_xdp_setup to double-check if
  stop/start is really necessary
- coding style fixes

Changes since v3:
- rename MVNETA_XDP_CONSUMED in MVNETA_XDP_DROPPED
- squash patch 4/8 and patch 3/8
- fix dma sync for XDP_TX verdict
- fix queue_index in xdp_rxq_info_reg
- cosmetics

Changes since v2:
- rely on page_pool_recycle_direct instead of xdp_return_buff for XDP_DROP
- define xdp buffer in mvneta_rx_swbm and avoid default initializations
- use dma_sync_single_for_cpu instead of dma_sync_single_range_for_cpu
- run page_pool_release_page in mvneta_swbm_add_rx_fragment even if
  the buffer contains just ETH_FCS

Changes since v1:
- sync dma buffers before refilling hw queues
- fix stats accounting

Changes since RFC:
- implement XDP_TX
- make tx pending buffer list agnostic
- code refactoring
- check if device is running in mvneta_xdp_setup

Lorenzo Bianconi (7):
  net: mvneta: introduce mvneta_update_stats routine
  net: mvneta: introduce page pool API for sw buffer manager
  net: mvneta: rely on build_skb in mvneta_rx_swbm poll routine
  net: mvneta: add basic XDP support
  net: mvneta: move header prefetch in mvneta_swbm_rx_frame
  net: mvneta: make tx buffer array agnostic
  net: mvneta: add XDP_TX support

 drivers/net/ethernet/marvell/Kconfig  |   1 +
 drivers/net/ethernet/marvell/mvneta.c | 618 +++++++++++++++++++-------
 2 files changed, 470 insertions(+), 149 deletions(-)

Comments

Jakub Kicinski Oct. 20, 2019, 5:47 p.m. UTC | #1
On Sat, 19 Oct 2019 10:13:20 +0200, Lorenzo Bianconi wrote:
> Add XDP support to mvneta driver for devices that rely on software
> buffer management. Supported verdicts are:
> - XDP_DROP
> - XDP_PASS
> - XDP_REDIRECT
> - XDP_TX
> Moreover set ndo_xdp_xmit net_device_ops function pointer in order
> to support redirecting from other device (e.g. virtio-net).
> Convert mvneta driver to page_pool API.
> This series is based on previous work done by Jesper and Ilias.
> We will send follow-up patches to reduce DMA-sync operations.

Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
David Miller Oct. 21, 2019, 5:36 p.m. UTC | #2
From: Lorenzo Bianconi <lorenzo@kernel.org>
Date: Sat, 19 Oct 2019 10:13:20 +0200

> Add XDP support to mvneta driver for devices that rely on software
> buffer management. Supported verdicts are:
> - XDP_DROP
> - XDP_PASS
> - XDP_REDIRECT
> - XDP_TX
> Moreover set ndo_xdp_xmit net_device_ops function pointer in order
> to support redirecting from other device (e.g. virtio-net).
> Convert mvneta driver to page_pool API.
> This series is based on previous work done by Jesper and Ilias.
> We will send follow-up patches to reduce DMA-sync operations.
 ...

Series applied, thank you.