[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230927075124.23941-1-larysa.zaremba@intel.com>
Date: Wed, 27 Sep 2023 09:51:00 +0200
From: Larysa Zaremba <larysa.zaremba@...el.com>
To: bpf@...r.kernel.org
Cc: Larysa Zaremba <larysa.zaremba@...el.com>,
ast@...nel.org,
daniel@...earbox.net,
andrii@...nel.org,
martin.lau@...ux.dev,
song@...nel.org,
yhs@...com,
john.fastabend@...il.com,
kpsingh@...nel.org,
sdf@...gle.com,
haoluo@...gle.com,
jolsa@...nel.org,
David Ahern <dsahern@...il.com>,
Jakub Kicinski <kuba@...nel.org>,
Willem de Bruijn <willemb@...gle.com>,
Jesper Dangaard Brouer <brouer@...hat.com>,
Anatoly Burakov <anatoly.burakov@...el.com>,
Alexander Lobakin <alexandr.lobakin@...el.com>,
Magnus Karlsson <magnus.karlsson@...il.com>,
Maryam Tahhan <mtahhan@...hat.com>,
xdp-hints@...-project.net,
netdev@...r.kernel.org,
Willem de Bruijn <willemdebruijn.kernel@...il.com>,
Alexei Starovoitov <alexei.starovoitov@...il.com>,
Simon Horman <simon.horman@...igine.com>,
Tariq Toukan <tariqt@...lanox.com>,
Saeed Mahameed <saeedm@...lanox.com>,
Maciej Fijalkowski <maciej.fijalkowski@...el.com>
Subject: [RFC bpf-next v2 00/24] XDP metadata via kfuncs for ice + mlx5
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.
On Maciej's request, I provide some numbers about impact of these patches
on ice performance.
ZC:
* Full hints implementation before addition of the static key decreases
pps in ZC mode by 6%
* Adding a static key eliminates this drop. Overall performce difference
compared to a clean tree in inconsequential.
skb (packets with invalid IP, dropped by stack):
* Overall, patchset improves performance in skb mode by 2%
[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/
Changes since RFC v1:
* new patch: hide some ice hints code behind a static key
* fixed several bugs in ZC mode (ice)
* change argument order in VLAN hint kfunc (tci, proto -> proto, tci)
* cosmetic changes
* analyze performance impact
Aleksander Lobakin (1):
net, xdp: allow metadata > 32
Larysa Zaremba (23):
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
ice: put XDP meta sources assignment under a static key condition
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 | 3 +
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 | 35 ++
drivers/net/ethernet/intel/ice/ice_ptp.c | 25 +-
drivers/net/ethernet/intel/ice/ice_ptp.h | 16 +-
drivers/net/ethernet/intel/ice/ice_txrx.c | 20 +-
drivers/net/ethernet/intel/ice/ice_txrx.h | 29 +-
drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 330 +++++++++++---
drivers/net/ethernet/intel/ice/ice_txrx_lib.h | 18 +-
drivers/net/ethernet/intel/ice/ice_xsk.c | 49 ++-
.../net/ethernet/mellanox/mlx5/core/en/txrx.h | 10 +
.../net/ethernet/mellanox/mlx5/core/en/xdp.c | 115 +++++
.../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 | 33 +-
include/uapi/linux/netdev.h | 8 +-
net/core/xdp.c | 56 +++
tools/include/uapi/linux/netdev.h | 8 +-
.../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 +-
30 files changed, 1161 insertions(+), 459 deletions(-)
--
2.41.0
Powered by blists - more mailing lists