net/mlx5/hws: set ft_type on root matcher creation
Checks
Commit Message
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 <valex@nvidia.com>
Signed-off-by: Suanming Mou <suanmingm@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
---
drivers/net/mlx5/hws/mlx5dr_matcher.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
Comments
Hi,
> -----Original Message-----
> From: Suanming Mou <suanmingm@nvidia.com>
> Sent: Wednesday, October 26, 2022 5:10 AM
> To: Matan Azrad <matan@nvidia.com>; Slava Ovsiienko
> <viacheslavo@nvidia.com>
> Cc: dev@dpdk.org; Raslan Darawsheh <rasland@nvidia.com>; Alex Vesker
> <valex@nvidia.com>
> Subject: [PATCH] net/mlx5/hws: set ft_type on root matcher creation
>
> 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 <valex@nvidia.com>
> Signed-off-by: Suanming Mou <suanmingm@nvidia.com>
> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Squashed into relevant commit in next-net-mlx,
Kindest regards,
Raslan Darawsheh
@@ -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");