This patch set adds support for AF_XDP zero-copy in the dpaa2-eth driver. The support is available on the LX2160A SoC and its variants and only on interfaces (DPNIs) with a maximum of 8 queues (HW limitations are the root cause). We are first implementing the .get_channels() callback since this a dependency for further work. Patches 2-3 are working on making the necessary changes for multiple buffer pools on a single interface. By default, without an AF_XDP socket attached, only a single buffer pool will be used and shared between all the queues. The changes in the functions are made in this patch, but the actual allocation and setup of a new BP is done in patch#10. Patches 4-5 are improving the information exposed in debugfs. We are exposing a new file to show which buffer pool is used by what channels and how many buffers it currently has. The 6th patch updates the dpni_set_pools() firmware API so that we are capable of setting up a different buffer per queue in later patches. In the 7th patch the generic dev_open/close APIs are used instead of the dpaa2-eth internal ones. Patches 8-9 are rearranging the existing code in dpaa2-eth.c in order to create new functions which will be used in the XSK implementation in dpaa2-xsk.c Finally, the last 3 patches are adding the actual support for both the Rx and Tx path of AF_XDP zero-copy and some associated tracepoints. Details on the implementation can be found in the actual patch. Changes in v2: - 3/12: Export dpaa2_eth_allocate_dpbp/dpaa2_eth_free_dpbp in this patch to avoid a build warning. The functions will be used in next patches. - 6/12: Use __le16 instead of u16 for the dpbp_id field. - 12/12: Use xdp_buff->data_hard_start when tracing the BP seeding. Changes in v3: - 3/12: fix leaking of bp on error path Ioana Ciornei (4): net: dpaa2-eth: rearrange variable in dpaa2_eth_get_ethtool_stats net: dpaa2-eth: export the CH#<index> in the 'ch_stats' debug file net: dpaa2-eth: export buffer pool info into a new debugfs file net: dpaa2-eth: use dev_close/open instead of the internal functions Robert-Ionut Alexa (8): net: dpaa2-eth: add support to query the number of queues through ethtool net: dpaa2-eth: add support for multiple buffer pools per DPNI net: dpaa2-eth: update the dpni_set_pools() API to support per QDBIN pools net: dpaa2-eth: create and export the dpaa2_eth_alloc_skb function net: dpaa2-eth: create and export the dpaa2_eth_receive_skb() function net: dpaa2-eth: AF_XDP RX zero copy support net: dpaa2-eth: AF_XDP TX zero copy support net: dpaa2-eth: add trace points on XSK events MAINTAINERS | 1 + drivers/net/ethernet/freescale/dpaa2/Makefile | 2 +- .../freescale/dpaa2/dpaa2-eth-debugfs.c | 57 +- .../freescale/dpaa2/dpaa2-eth-trace.h | 142 +++-- .../net/ethernet/freescale/dpaa2/dpaa2-eth.c | 487 ++++++++++++------ .../net/ethernet/freescale/dpaa2/dpaa2-eth.h | 101 +++- .../ethernet/freescale/dpaa2/dpaa2-ethtool.c | 58 ++- .../net/ethernet/freescale/dpaa2/dpaa2-xsk.c | 454 ++++++++++++++++ .../net/ethernet/freescale/dpaa2/dpni-cmd.h | 19 +- drivers/net/ethernet/freescale/dpaa2/dpni.c | 6 +- drivers/net/ethernet/freescale/dpaa2/dpni.h | 9 + 11 files changed, 1094 insertions(+), 242 deletions(-) create mode 100644 drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c -- 2.25.1