mbox series

[v5,bpf,00/11] net: bpf_xdp_adjust_tail() and Intel mbuf fixes

Message ID 20240122221610.556746-1-maciej.fijalkowski@intel.com (mailing list archive)
Headers show
Series net: bpf_xdp_adjust_tail() and Intel mbuf fixes | expand

Message

Maciej Fijalkowski Jan. 22, 2024, 10:15 p.m. UTC
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.

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(-)

Comments

Magnus Karlsson Jan. 24, 2024, 8:58 a.m. UTC | #1
On Mon, 22 Jan 2024 at 23:16, Maciej Fijalkowski
<maciej.fijalkowski@intel.com> 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
>
>