[v1 00/16] net/mlx5/hws: support range and partial hash matching
Alex Vesker
valex at nvidia.com
Tue Jan 31 10:33:29 CET 2023
ConnectX and BlueField devices which support HWS are capable of performing
advanced match, range-match and hashing operations on packet headers. This
patch-set introduces support for (1) range matching - allows combining
range and exact match over provided item fields using spec, last and mask.
A useful example for Range and exact match is matching exact IP and port
range. This series also introduces (2) partial hash, which allows using
the same matcher and performing partial hashing in case of multiple match
templates are provided. The matcher create code finds the union and
intersection fields to split the hash and match in a way the HW can
support. This increases the match templates combinations possible although
it may limit the maximum PPS. Since (1) and (2) are not fully support on
current HW the implementation is done on top of a HW like FW API using
WQEs.
Alex Vesker (16):
net/mlx5/hws: support synchronous drain
net/mlx5/hws: matcher remove AT and MT limitation
net/mlx5/hws: support GTA WQE write using FW command
net/mlx5/hws: add capability query for gen wqe command
net/mlx5/hws: align RTC create command with PRM format
net/mlx5/hws: add send FW match STE using gen WQE
net/mlx5/hws: add send FW range STE WQE
net/mlx5/hws: move matcher size check to function
net/mlx5/hws: support range match
net/mlx5/hws: redesign definer create
net/mlx5/hws: support partial hash
net/mlx5/hws: add range definer creation support
net/mlx5/hws: add FW WQE rule creation logic
net/mlx5/hws: add debug dump support for range and hash
net/mlx5/hws: rename pattern cache object
net/mlx5/hws: cache definer for reuse
drivers/common/mlx5/mlx5_prm.h | 53 +-
drivers/net/mlx5/hws/mlx5dr.h | 6 +-
drivers/net/mlx5/hws/mlx5dr_cmd.c | 72 ++-
drivers/net/mlx5/hws/mlx5dr_cmd.h | 27 +-
drivers/net/mlx5/hws/mlx5dr_context.c | 12 +-
drivers/net/mlx5/hws/mlx5dr_context.h | 1 +
drivers/net/mlx5/hws/mlx5dr_debug.c | 41 +-
drivers/net/mlx5/hws/mlx5dr_debug.h | 4 +-
drivers/net/mlx5/hws/mlx5dr_definer.c | 750 +++++++++++++++++++++----
drivers/net/mlx5/hws/mlx5dr_definer.h | 44 +-
drivers/net/mlx5/hws/mlx5dr_internal.h | 2 +-
drivers/net/mlx5/hws/mlx5dr_matcher.c | 279 ++++++---
drivers/net/mlx5/hws/mlx5dr_matcher.h | 43 +-
drivers/net/mlx5/hws/mlx5dr_pat_arg.c | 49 +-
drivers/net/mlx5/hws/mlx5dr_pat_arg.h | 6 +-
drivers/net/mlx5/hws/mlx5dr_rule.c | 193 ++++++-
drivers/net/mlx5/hws/mlx5dr_rule.h | 2 +
drivers/net/mlx5/hws/mlx5dr_send.c | 169 +++++-
drivers/net/mlx5/hws/mlx5dr_send.h | 24 +-
drivers/net/mlx5/mlx5_flow_hw.c | 2 +-
20 files changed, 1475 insertions(+), 304 deletions(-)
--
2.18.1
More information about the dev
mailing list