Hi, this time we're on Tx side of AF_XDP and we touch i40e and ice drivers. Unfortunately, similar scalability issues that were addressed for XDP processing in ice, exist on AF_XDP side. Let's resolve them in mostly the same way as we did on [0] and utilize the Tx batching API from xsk buffer pool. Magnus moves the array of Tx descriptors that is used with batching approach to the xsk buffer pool. This means that future users of this API will not have carry the array on their own side, they can simple refer to pool's tx_desc array, which can be seen on patch from Magnus. Described patch is based on i40e as it is the only user of this API. Tx batching is still left to be tried out for ice, though. v2: * introduce new patch that resets @next_dd and @next_rs fields * use batching API for AF_XDP Tx on ice side Thanks, Magnus & Maciej [0]: https://lore.kernel.org/bpf/20211015162908.145341-8-anthony.l.nguyen@xxxxxxxxx/ Maciej Fijalkowski (3): ice: xsk: avoid potential dead AF_XDP Tx processing ice: xsk: improve AF_XDP ZC Tx and use batching API ice: xsk: borrow xdp_tx_active logic from i40e Magnus Karlsson (1): i40e: xsk: move tmp desc array from driver to pool drivers/net/ethernet/intel/i40e/i40e_txrx.c | 11 - drivers/net/ethernet/intel/i40e/i40e_txrx.h | 1 - drivers/net/ethernet/intel/i40e/i40e_xsk.c | 4 +- drivers/net/ethernet/intel/ice/ice_txrx.c | 4 +- drivers/net/ethernet/intel/ice/ice_txrx.h | 5 +- drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 1 + drivers/net/ethernet/intel/ice/ice_xsk.c | 255 ++++++++++++------ drivers/net/ethernet/intel/ice/ice_xsk.h | 26 +- include/net/xdp_sock_drv.h | 5 +- include/net/xsk_buff_pool.h | 1 + net/xdp/xsk.c | 13 +- net/xdp/xsk_buff_pool.c | 7 + net/xdp/xsk_queue.h | 12 +- 13 files changed, 216 insertions(+), 129 deletions(-) -- 2.33.1