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 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 (8): 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: sync dma buffers before refilling hw queues 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 | 631 +++++++++++++++++++------- 2 files changed, 472 insertions(+), 160 deletions(-) -- 2.21.0
