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

Larysa Zaremba
2023-08-24T19:33:49Z

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.

[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