On Mon, 22 Jan 2024 at 23:16, Maciej Fijalkowski <maciej.fijalkowski@xxxxxxxxx> wrote: > > Hey, > > after a break followed by dealing with sickness, here is a v5 that makes > bpf_xdp_adjust_tail() actually usable for ZC drivers that support XDP > multi-buffer. Since v4 I tried also using bpf_xdp_adjust_tail() with > positive offset which exposed yet another issues, which can be observed > by increased commit count when compared to v3. Thanks for this fix of getting bpf_xdp_djust_tail to work with AF_XDP in multi-buffer mode. We clearly need to add a test case for this helper in our test suite. I have put it on the todo list. > John, in the end I think we should remove handling > MEM_TYPE_XSK_BUFF_POOL from __xdp_return(), but it is out of the scope > for fixes set, IMHO. > > Thanks, > Maciej > > v5: > - pick correct version of patch 5 [Simon] > - elaborate a bit more on what patch 2 fixes > > v4: > - do not clear frags flag when deleting tail; xsk_buff_pool now does > that > - skip some NULL tests for xsk_buff_get_tail [Martin, John] > - address problems around registering xdp_rxq_info > - fix bpf_xdp_frags_increase_tail() for ZC mbuf > > v3: > - add acks > - s/xsk_buff_tail_del/xsk_buff_del_tail > - address i40e as well (thanks Tirthendu) > > v2: > - fix !CONFIG_XDP_SOCKETS builds > - add reviewed-by tag to patch 3 > > > Maciej Fijalkowski (10): > xsk: recycle buffer in case Rx queue was full > xsk: make xsk_buff_pool responsible for clearing xdp_buff::flags > xsk: fix usage of multi-buffer BPF helpers for ZC XDP > ice: work on pre-XDP prog frag count > ice: remove redundant xdp_rxq_info registration > intel: xsk: initialize skb_frag_t::bv_offset in ZC drivers > ice: update xdp_rxq_info::frag_size for ZC enabled Rx queue > xdp: reflect tail increase for MEM_TYPE_XSK_BUFF_POOL > i40e: set xdp_rxq_info::frag_size > i40e: update xdp_rxq_info::frag_size for ZC enabled Rx queue > > Tirthendu Sarkar (1): > i40e: handle multi-buffer packets that are shrunk by xdp prog > > drivers/net/ethernet/intel/i40e/i40e_main.c | 47 ++++++++++++------ > drivers/net/ethernet/intel/i40e/i40e_txrx.c | 49 +++++++++---------- > drivers/net/ethernet/intel/i40e/i40e_xsk.c | 4 +- > drivers/net/ethernet/intel/ice/ice_base.c | 7 ++- > drivers/net/ethernet/intel/ice/ice_txrx.c | 19 ++++--- > drivers/net/ethernet/intel/ice/ice_txrx.h | 1 + > drivers/net/ethernet/intel/ice/ice_txrx_lib.h | 31 ++++++++---- > drivers/net/ethernet/intel/ice/ice_xsk.c | 4 +- > include/net/xdp_sock_drv.h | 26 ++++++++++ > net/core/filter.c | 43 ++++++++++++---- > net/xdp/xsk.c | 12 +++-- > net/xdp/xsk_buff_pool.c | 3 ++ > 12 files changed, 167 insertions(+), 79 deletions(-) > > -- > 2.34.1 > >