The ft_type should be provided to mlx5dv_create_flow_matcher if the matcher attributes exist, not only for FDB but for NIC as well. If the ft_type is not provided, matcher/rule creation might fail.
Fixes: ac7931dd1908 ("net/mlx5/hws: add HWS matcher object") Signed-off-by: Alex Vesker <va...@nvidia.com> Signed-off-by: Suanming Mou <suanmi...@nvidia.com> Acked-by: Viacheslav Ovsiienko <viachesl...@nvidia.com> --- drivers/net/mlx5/hws/mlx5dr_matcher.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/net/mlx5/hws/mlx5dr_matcher.c b/drivers/net/mlx5/hws/mlx5dr_matcher.c index d1205c42fa..67adfeec6c 100644 --- a/drivers/net/mlx5/hws/mlx5dr_matcher.c +++ b/drivers/net/mlx5/hws/mlx5dr_matcher.c @@ -679,20 +679,24 @@ static int mlx5dr_matcher_init_root(struct mlx5dr_matcher *matcher) uint8_t match_criteria; int ret; +#ifdef HAVE_MLX5DV_FLOW_MATCHER_FT_TYPE + attr.comp_mask = MLX5DV_FLOW_MATCHER_MASK_FT_TYPE; + switch (type) { case MLX5DR_TABLE_TYPE_NIC_RX: + attr.ft_type = MLX5DV_FLOW_TABLE_TYPE_NIC_RX; + break; case MLX5DR_TABLE_TYPE_NIC_TX: + attr.ft_type = MLX5DV_FLOW_TABLE_TYPE_NIC_TX; break; -#ifdef HAVE_MLX5DV_FLOW_MATCHER_FT_TYPE case MLX5DR_TABLE_TYPE_FDB: - attr.comp_mask = MLX5DV_FLOW_MATCHER_MASK_FT_TYPE; attr.ft_type = MLX5DV_FLOW_TABLE_TYPE_FDB; break; -#endif default: assert(0); break; } +#endif if (matcher->attr.priority > UINT16_MAX) { DR_LOG(ERR, "Root matcher priority exceeds allowed limit"); -- 2.25.1