mbox series

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

Message ID 20230824192703.712881-1-larysa.zaremba@intel.com (mailing list archive)
Headers show
Series XDP metadata via kfuncs for ice + mlx5 | expand

Message

Larysa Zaremba Aug. 24, 2023, 7:26 p.m. UTC
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(-)

Comments

Larysa Zaremba Aug. 31, 2023, 2:50 p.m. UTC | #1
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.
> 
> [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/
 
[...]

Is this an OK approach to your reauest or have you expected something else?
Fijalkowski, Maciej Sept. 4, 2023, 4:06 p.m. UTC | #2
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
>
Larysa Zaremba Sept. 6, 2023, 2:09 p.m. UTC | #3
On Mon, Sep 04, 2023 at 06:06:51PM +0200, Maciej Fijalkowski wrote:
> 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.

Thank you for the review, I will send the next version with performance numbers.