On Tue, Apr 18, 2023 at 09:04:53PM +0200, Gerhard Engleder wrote: > Implement XDP socket zero-copy support for tsnep driver. I tried to > follow existing drivers like igc as far as possible. But one main > difference is that tsnep does not need any reconfiguration for XDP BPF > program setup. So I decided to keep this behavior no matter if a XSK > pool is used or not. As a result, tsnep starts using the XSK pool even > if no XDP BPF program is available. > > Another difference is that I tried to prevent potentially failing > allocations during XSK pool setup. E.g. both memory models for page pool > and XSK pool are registered all the time. Thus, XSK pool setup cannot > end up with not working queues. > > Some prework is done to reduce the last two XSK commits to actual XSK > changes. I had minor comments on two last patches, besides: Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@xxxxxxxxx> > > v3: > - use __netif_tx_lock_bh() (Paolo Abeni) > - comment that rx->page_buffer is always zero terminated (Paolo Abeni) > > v2: > - eliminate modulo op in TX/RX path (Maciej Fijalkowski) > - eliminate retval variable in tsnep_rx_alloc_zc() (Maciej Fijalkowski) > - scope variable entry within loop (Maciej Fijalkowski) > - use DMA_ATTR_SKIP_CPU_SYNC directly (Maciej Fijalkowski) > - union for page/xdp in tsnep_rx_entry (Maciej Fijalkowski) > - provide performance numbers (Maciej Fijalkowski) > - use xsk_buff_alloc_batch() (Maciej Fijalkowski) > - use xsk_tx_peek_release_desc_batch() (Maciej Fijalkowski) > - don't call tsnep_rx_reopen() if netdev is down > - init adapter pointer of queue only once > > Gerhard Engleder (6): > tsnep: Replace modulo operation with mask > tsnep: Rework TX/RX queue initialization > tsnep: Add functions for queue enable/disable > tsnep: Move skb receive action to separate function > tsnep: Add XDP socket zero-copy RX support > tsnep: Add XDP socket zero-copy TX support > > drivers/net/ethernet/engleder/tsnep.h | 16 +- > drivers/net/ethernet/engleder/tsnep_main.c | 863 ++++++++++++++++++--- > drivers/net/ethernet/engleder/tsnep_xdp.c | 66 ++ > 3 files changed, 822 insertions(+), 123 deletions(-) > > -- > 2.30.2 >