From: Alex Vesker > 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. > > v2: > -Fix missed checkpatch comments > > 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
Series-acked-by: Matan Azrad <ma...@nvidia.com> > 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