When working with HW Steering flow engine (HWS, dv_flow_en=2), mlx5 PMD does not support using count and age flow actions on flow group 0 i.e., root table. Flow rules on root table are special in a sense that they are created through mlx5 kernel driver using rdma-core mlx5dv_create_flow() API. This API however does not support using counters from FW-allocated counter bulks which contain more than 1 counter (extensively used with HWS to optimize allocations). This affects age flow action as well, because it's implementation in mlx5 PMD relies on counters.
rdma-core version v60.0 added a new flow action type to mlx5dv_create_flow() API - MLX5DV_FLOW_ACTION_COUNTERS_DEVX_WITH_OFFSET - which allows the use of counters from bigger FW-allocated counter bulks. This in turn allows mlx5 PMD to extend count and age flow action support to group 0. This patchset implements that support. Patchset contains: - Patch 1 - Adds detection of MLX5DV_FLOW_ACTION_COUNTERS_DEVX_WITH_OFFSET in rdma-core at build time. - Patch 2 - Adds support for counter action in HWS layer whenever MLX5DV_FLOW_ACTION_COUNTERS_DEVX_WITH_OFFSET is available. - Patch 3-4 - Small reworks and fixes which allow cleaner implementation of count/age support. - Patch 5 - Enables support of count and age flow action in group 0, in flow API implementation with HWS. Dariusz Sosnowski (5): common/mlx5: detect DevX counters support in rdma-core net/mlx5/hws: support counter from DevX bulk on root net/mlx5: rework root group checks in table create net/mlx5: improve error reporting on masked indirect actions net/mlx5: support count and age on root group doc/guides/nics/mlx5.rst | 34 +++++-- doc/guides/rel_notes/release_25_11.rst | 4 + drivers/common/mlx5/linux/meson.build | 2 + drivers/net/mlx5/hws/mlx5dr.h | 14 +++ drivers/net/mlx5/hws/mlx5dr_action.c | 19 ++-- drivers/net/mlx5/mlx5_flow.h | 17 ++++ drivers/net/mlx5/mlx5_flow_hw.c | 136 ++++++++++++++----------- drivers/net/mlx5/mlx5_hws_cnt.c | 43 ++++++-- drivers/net/mlx5/mlx5_hws_cnt.h | 17 +++- 9 files changed, 196 insertions(+), 90 deletions(-) -- 2.39.5

