Re: [xdp-hints] [RFC bpf-next 00/23] XDP metadata via kfuncs for ice + mlx5

Maciej Fijalkowski
2023-09-04T16:07:37Z

On Thu, Aug 24, 2023 at 09:26:39PM +0200, Larysa Zaremba wrote:
> Alexei has requested an implementation of VLAN and checksum XDP hints
> for one more driver [0].
>
> This series is exactly the v5 of "XDP metadata via kfuncs for ice" [1]
> with 2 additional patches for mlx5.
>
> Firstly, there is a VLAN hint implementation. I am pretty sure this
> one works and would not object adding it to the main series, if someone
> from nvidia ACKs it.
>
> The second patch is a checksum hint implementation and it is very rough.
> There is logic duplication and some missing features, but I am sure it
> captures the main points of the potential end implementation.
>
> I think it is unrealistic for me to provide a fully working mlx5 checksum
> hint implementation (complex logic, no HW), so would much rather prefer
> not having it in my main series. My main intension with this RFC is
> to prove proposed hints functions are suitable for non-intel HW.

I went through ice patches mostly, can you provide performance numbers for
XDP workloads without metadata in picture? I'd like to see whether
standard 64b traffic gets affected or not since you're modifying
ice_rx_ring layout.

>
> [0] https://lore.kernel.org/bpf/CAADnVQLNeO81zc4f_z_UDCi+tJ2LS4dj2E1+au5TbXM+CPSyXQ@mail.gmail.com/
> [1] https://lore.kernel.org/bpf/20230811161509.19722-1-larysa.zaremba@intel.com/
>
> Aleksander Lobakin (1):
> net, xdp: allow metadata > 32
>
> Larysa Zaremba (22):
> ice: make RX hash reading code more reusable
> ice: make RX HW timestamp reading code more reusable
> ice: make RX checksum checking code more reusable
> ice: Make ptype internal to descriptor info processing
> ice: Introduce ice_xdp_buff
> ice: Support HW timestamp hint
> ice: Support RX hash XDP hint
> ice: Support XDP hints in AF_XDP ZC mode
> xdp: Add VLAN tag hint
> ice: Implement VLAN tag hint
> ice: use VLAN proto from ring packet context in skb path
> xdp: Add checksum hint
> ice: Implement checksum hint
> selftests/bpf: Allow VLAN packets in xdp_hw_metadata
> selftests/bpf: Add flags and new hints to xdp_hw_metadata
> veth: Implement VLAN tag and checksum XDP hint
> net: make vlan_get_tag() return -ENODATA instead of -EINVAL
> selftests/bpf: Use AF_INET for TX in xdp_metadata
> selftests/bpf: Check VLAN tag and proto in xdp_metadata
> selftests/bpf: check checksum state in xdp_metadata
> mlx5: implement VLAN tag XDP hint
> mlx5: implement RX checksum XDP hint
>
> Documentation/networking/xdp-rx-metadata.rst | 11 +-
> drivers/net/ethernet/intel/ice/ice.h | 2 +
> drivers/net/ethernet/intel/ice/ice_ethtool.c | 2 +-
> .../net/ethernet/intel/ice/ice_lan_tx_rx.h | 412 +++++++++---------
> drivers/net/ethernet/intel/ice/ice_lib.c | 2 +-
> drivers/net/ethernet/intel/ice/ice_main.c | 23 +
> drivers/net/ethernet/intel/ice/ice_ptp.c | 27 +-
> drivers/net/ethernet/intel/ice/ice_ptp.h | 15 +-
> drivers/net/ethernet/intel/ice/ice_txrx.c | 19 +-
> drivers/net/ethernet/intel/ice/ice_txrx.h | 29 +-
> drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 343 ++++++++++++---
> drivers/net/ethernet/intel/ice/ice_txrx_lib.h | 18 +-
> drivers/net/ethernet/intel/ice/ice_xsk.c | 26 +-
> .../net/ethernet/mellanox/mlx5/core/en/txrx.h | 10 +
> .../net/ethernet/mellanox/mlx5/core/en/xdp.c | 116 +++++
> .../net/ethernet/mellanox/mlx5/core/en_rx.c | 12 +-
> drivers/net/veth.c | 42 ++
> include/linux/if_vlan.h | 4 +-
> include/linux/mlx5/device.h | 4 +-
> include/linux/skbuff.h | 13 +-
> include/net/xdp.h | 29 +-
> kernel/bpf/offload.c | 4 +
> net/core/xdp.c | 57 +++
> .../selftests/bpf/prog_tests/xdp_metadata.c | 187 ++++----
> .../selftests/bpf/progs/xdp_hw_metadata.c | 48 +-
> .../selftests/bpf/progs/xdp_metadata.c | 16 +
> tools/testing/selftests/bpf/testing_helpers.h | 3 +
> tools/testing/selftests/bpf/xdp_hw_metadata.c | 67 ++-
> tools/testing/selftests/bpf/xdp_metadata.h | 42 +-
> 29 files changed, 1124 insertions(+), 459 deletions(-)
>
> --
> 2.41.0
>