net/mlx5/hws: set ft_type on root matcher creation

Message ID 20221026020943.4643-1-suanmingm@nvidia.com (mailing list archive)
State Accepted, archived
Delegated to: Raslan Darawsheh
Headers
Series net/mlx5/hws: set ft_type on root matcher creation |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-testing warning apply patch failure
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS

Commit Message

Suanming Mou Oct. 26, 2022, 2:09 a.m. UTC
  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

Raslan Darawsheh Oct. 26, 2022, 9:57 a.m. UTC | #1
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
  

Patch

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");