XDP hardware hints discussion mail archive
 help / color / mirror / Atom feed
* [xdp-hints] [PATCH bpf-next v7 00/18] XDP metadata via kfuncs for ice + VLAN hint
@ 2023-11-15 17:52 Larysa Zaremba
  2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 01/18] ice: make RX hash reading code more reusable Larysa Zaremba
                   ` (17 more replies)
  0 siblings, 18 replies; 35+ messages in thread
From: Larysa Zaremba @ 2023-11-15 17:52 UTC (permalink / raw)
  To: bpf
  Cc: Larysa Zaremba, ast, daniel, andrii, martin.lau, song, yhs,
	john.fastabend, kpsingh, sdf, haoluo, jolsa, David Ahern,
	Jakub Kicinski, Willem de Bruijn, Jesper Dangaard Brouer,
	Anatoly Burakov, Alexander Lobakin, Magnus Karlsson,
	Maryam Tahhan, xdp-hints, netdev, Willem de Bruijn,
	Alexei Starovoitov, Tariq Toukan, Saeed Mahameed,
	Maciej Fijalkowski

This series introduces XDP hints via kfuncs [0] to the ice driver.

Series brings the following existing hints to the ice driver:
 - HW timestamp
 - RX hash with type

Series also introduces VLAN tag with protocol XDP hint, it now be accessed by
XDP and userspace (AF_XDP) programs. They can also be checked with xdp_metadata
test and xdp_hw_metadata program.

Impact of these patches on ice performance:
ZC:
* Full hints implementation decreases pps in ZC mode by less than 3%
  (64B, rxdrop)

skb (packets with invalid IP, dropped by stack):
* Overall, patchset improves peak performance in skb mode by about 0.5%

[0] https://patchwork.kernel.org/project/netdevbpf/cover/20230119221536.3349901-1-sdf@google.com/

v6:
https://lore.kernel.org/bpf/20231012170524.21085-1-larysa.zaremba@intel.com/
Intermediate RFC v2:
https://lore.kernel.org/bpf/20230927075124.23941-1-larysa.zaremba@intel.com/
Intermediate RFC v1:
https://lore.kernel.org/bpf/20230824192703.712881-1-larysa.zaremba@intel.com/
v5:
https://lore.kernel.org/bpf/20230811161509.19722-1-larysa.zaremba@intel.com/
v4:
https://lore.kernel.org/bpf/20230728173923.1318596-1-larysa.zaremba@intel.com/
v3:
https://lore.kernel.org/bpf/20230719183734.21681-1-larysa.zaremba@intel.com/
v2:
https://lore.kernel.org/bpf/20230703181226.19380-1-larysa.zaremba@intel.com/
v1:
https://lore.kernel.org/all/20230512152607.992209-1-larysa.zaremba@intel.com/

Changes since v6:
* add ability to fill cb of all xdp_buffs in xsk_buff_pool
* place just pointer to packet context in ice_xdp_buff
* add const qualifiers in veth implementation
* generate uapi for VLAN hint

Changes since v5:
* drop checksum hint from the patchset entirely
* Alex's patch that lifts the data_meta size limitation is no longer
  required in this patchset, so will be sent separately
* new patch: hide some ice hints code behind a static key
* fix several bugs in ZC mode (ice)
* change argument order in VLAN hint kfunc (tci, proto -> proto, tci)
* cosmetic changes
* analyze performance impact

Changes since v4:
* Drop the concept of partial checksum from the hint design
* Drop the concept of checksum level from the hint design

Changes since v3:
* use XDP_CHECKSUM_VALID_LVL0 + csum_level instead of csum_level + 1
* fix spelling mistakes
* read XDP timestamp unconditionally
* add TO_STR() macro

Changes since v2:
* redesign checksum hint, so now it gives full status
* rename vlan_tag -> vlan_tci, where applicable
* use open_netns() and close_netns() in xdp_metadata
* improve VLAN hint documentation
* replace CFI with DEI
* use VLAN_VID_MASK in xdp_metadata
* make vlan_get_tag() return -ENODATA
* remove unused rx_ptype in ice_xsk.c
* fix ice timestamp code division between patches

Changes since v1:
* directly return RX hash, RX timestamp and RX checksum status
  in skb-common functions
* use intermediate enum value for checksum status in ice
* get rid of ring structure dependency in ice kfunc implementation
* make variables const, when possible, in ice implementation
* use -ENODATA instead of -EOPNOTSUPP for driver implementation
* instead of having 2 separate functions for c-tag and s-tag,
  use 1 function that outputs both VLAN tag and protocol ID
* improve documentation for introduced hints
* update xdp_metadata selftest to test new hints
* implement new hints in veth, so they can be tested in xdp_metadata
* parse VLAN tag in xdp_hw_metadata

Larysa Zaremba (17):
  ice: make RX hash reading code more reusable
  ice: make RX HW timestamp reading 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
  veth: Implement VLAN tag XDP hint
  net: make vlan_get_tag() return -ENODATA instead of -EINVAL
  mlx5: implement VLAN tag XDP hint
  selftests/bpf: Allow VLAN packets in xdp_hw_metadata
  selftests/bpf: Add flags and VLAN hint to xdp_hw_metadata
  selftests/bpf: Use AF_INET for TX in xdp_metadata
  selftests/bpf: Check VLAN tag and proto in xdp_metadata

Maciej Fijalkowski (1):
  xsk: add functions to fill control buffer

 Documentation/netlink/specs/netdev.yaml       |   4 +
 Documentation/networking/xdp-rx-metadata.rst  |   8 +-
 drivers/net/ethernet/intel/ice/ice.h          |   2 +
 drivers/net/ethernet/intel/ice/ice_base.c     |  14 +
 .../net/ethernet/intel/ice/ice_lan_tx_rx.h    | 412 +++++++++---------
 drivers/net/ethernet/intel/ice/ice_main.c     |  21 +
 drivers/net/ethernet/intel/ice/ice_ptp.c      |  22 +-
 drivers/net/ethernet/intel/ice/ice_ptp.h      |  16 +-
 drivers/net/ethernet/intel/ice/ice_txrx.c     |  19 +-
 drivers/net/ethernet/intel/ice/ice_txrx.h     |  32 +-
 drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 209 ++++++++-
 drivers/net/ethernet/intel/ice/ice_txrx_lib.h |  18 +-
 drivers/net/ethernet/intel/ice/ice_xsk.c      |  29 +-
 .../net/ethernet/mellanox/mlx5/core/en/xdp.c  |  15 +
 drivers/net/veth.c                            |  19 +
 include/linux/if_vlan.h                       |   4 +-
 include/linux/mlx5/device.h                   |   2 +-
 include/net/xdp.h                             |   9 +
 include/net/xdp_sock_drv.h                    |  17 +
 include/net/xsk_buff_pool.h                   |   2 +
 include/uapi/linux/netdev.h                   |   5 +-
 net/core/xdp.c                                |  33 ++
 net/xdp/xsk_buff_pool.c                       |  12 +
 tools/include/uapi/linux/netdev.h             |   5 +-
 tools/net/ynl/generated/netdev-user.c         |   1 +
 .../selftests/bpf/prog_tests/xdp_metadata.c   | 184 ++++----
 .../selftests/bpf/progs/xdp_hw_metadata.c     |  38 +-
 .../selftests/bpf/progs/xdp_metadata.c        |   5 +
 tools/testing/selftests/bpf/testing_helpers.h |   3 +
 tools/testing/selftests/bpf/xdp_hw_metadata.c |  38 +-
 tools/testing/selftests/bpf/xdp_metadata.h    |  34 +-
 31 files changed, 825 insertions(+), 407 deletions(-)

-- 
2.41.0


^ permalink raw reply	[flat|nested] 35+ messages in thread

end of thread, other threads:[~2023-12-01 13:52 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-15 17:52 [xdp-hints] [PATCH bpf-next v7 00/18] XDP metadata via kfuncs for ice + VLAN hint Larysa Zaremba
2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 01/18] ice: make RX hash reading code more reusable Larysa Zaremba
2023-11-16 15:04   ` [xdp-hints] " Maciej Fijalkowski
2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 02/18] ice: make RX HW timestamp " Larysa Zaremba
2023-11-16 15:19   ` [xdp-hints] " Maciej Fijalkowski
2023-11-17 14:26     ` Larysa Zaremba
2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 03/18] ice: Make ptype internal to descriptor info processing Larysa Zaremba
2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 04/18] ice: Introduce ice_xdp_buff Larysa Zaremba
2023-11-16 12:52   ` [xdp-hints] " Maciej Fijalkowski
2023-11-16  2:55     ` Larysa Zaremba
2023-12-01 13:51       ` Larysa Zaremba
2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 05/18] ice: Support HW timestamp hint Larysa Zaremba
2023-11-16 15:21   ` [xdp-hints] " Maciej Fijalkowski
2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 06/18] ice: Support RX hash XDP hint Larysa Zaremba
2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 07/18] xsk: add functions to fill control buffer Larysa Zaremba
2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 08/18] ice: Support XDP hints in AF_XDP ZC mode Larysa Zaremba
2023-11-16 12:49   ` [xdp-hints] " Maciej Fijalkowski
2023-11-16  3:01     ` Larysa Zaremba
2023-11-16 15:01       ` Maciej Fijalkowski
2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 09/18] xdp: Add VLAN tag hint Larysa Zaremba
2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 10/18] ice: Implement " Larysa Zaremba
2023-11-16 15:47   ` [xdp-hints] " Maciej Fijalkowski
2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 11/18] ice: use VLAN proto from ring packet context in skb path Larysa Zaremba
2023-11-17  8:10   ` [xdp-hints] " Maciej Fijalkowski
2023-11-17 14:07     ` Larysa Zaremba
2023-11-17 15:14       ` Maciej Fijalkowski
2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 12/18] veth: Implement VLAN tag XDP hint Larysa Zaremba
2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 13/18] net: make vlan_get_tag() return -ENODATA instead of -EINVAL Larysa Zaremba
2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 14/18] mlx5: implement VLAN tag XDP hint Larysa Zaremba
2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 15/18] selftests/bpf: Allow VLAN packets in xdp_hw_metadata Larysa Zaremba
2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 16/18] selftests/bpf: Add flags and VLAN hint to xdp_hw_metadata Larysa Zaremba
2023-11-15 17:52 ` [xdp-hints] [PATCH bpf-next v7 17/18] selftests/bpf: Use AF_INET for TX in xdp_metadata Larysa Zaremba
2023-11-20 21:15   ` [xdp-hints] " Stanislav Fomichev
     [not found]   ` <170051500599.3770946.2674696540245347885@gauss.local>
2023-11-21  9:02     ` Larysa Zaremba
2023-11-15 17:53 ` [xdp-hints] [PATCH bpf-next v7 18/18] selftests/bpf: Check VLAN tag and proto " Larysa Zaremba

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox