[v2,08/16] net/mlx5/hws: move matcher size check to function

Message ID 20230201072815.1329101-9-valex@nvidia.com (mailing list archive)
State Accepted, archived
Delegated to: Raslan Darawsheh
Headers
Series net/mlx5/hws: support range and partial hash matching |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Alex Vesker Feb. 1, 2023, 7:28 a.m. UTC
  This check can be later on reused for other places, it
will look better in a function

Signed-off-by: Alex Vesker <valex@nvidia.com>
---
 drivers/net/mlx5/hws/mlx5dr_matcher.c | 43 +++++++++++++++++----------
 1 file changed, 27 insertions(+), 16 deletions(-)
  

Patch

diff --git a/drivers/net/mlx5/hws/mlx5dr_matcher.c b/drivers/net/mlx5/hws/mlx5dr_matcher.c
index 101a12d361..b8db0a27ae 100644
--- a/drivers/net/mlx5/hws/mlx5dr_matcher.c
+++ b/drivers/net/mlx5/hws/mlx5dr_matcher.c
@@ -565,6 +565,32 @@  static void mlx5dr_matcher_destroy_rtc(struct mlx5dr_matcher *matcher,
 		mlx5dr_pool_chunk_free(ste_pool, ste);
 }
 
+static int
+mlx5dr_matcher_check_attr_sz(struct mlx5dr_cmd_query_caps *caps,
+			     struct mlx5dr_matcher_attr *attr)
+{
+	if (attr->table.sz_col_log > caps->rtc_log_depth_max) {
+		DR_LOG(ERR, "Matcher depth exceeds limit %d", caps->rtc_log_depth_max);
+		goto not_supported;
+	}
+
+	if (attr->table.sz_col_log + attr->table.sz_row_log > caps->ste_alloc_log_max) {
+		DR_LOG(ERR, "Total matcher size exceeds limit %d", caps->ste_alloc_log_max);
+		goto not_supported;
+	}
+
+	if (attr->table.sz_col_log + attr->table.sz_row_log < caps->ste_alloc_log_gran) {
+		DR_LOG(ERR, "Total matcher size below limit %d", caps->ste_alloc_log_gran);
+		goto not_supported;
+	}
+
+	return 0;
+
+not_supported:
+	rte_errno = EOPNOTSUPP;
+	return rte_errno;
+}
+
 static void mlx5dr_matcher_set_pool_attr(struct mlx5dr_pool_attr *attr,
 					 struct mlx5dr_matcher *matcher)
 {
@@ -840,22 +866,7 @@  mlx5dr_matcher_process_attr(struct mlx5dr_cmd_query_caps *caps,
 	    attr->insert_mode == MLX5DR_MATCHER_INSERT_BY_HASH)
 		attr->table.sz_col_log = mlx5dr_matcher_rules_to_tbl_depth(attr->rule.num_log);
 
-	if (attr->table.sz_col_log > caps->rtc_log_depth_max) {
-		DR_LOG(ERR, "Matcher depth exceeds limit %d", caps->rtc_log_depth_max);
-		goto not_supported;
-	}
-
-	if (attr->table.sz_col_log + attr->table.sz_row_log > caps->ste_alloc_log_max) {
-		DR_LOG(ERR, "Total matcher size exceeds limit %d", caps->ste_alloc_log_max);
-		goto not_supported;
-	}
-
-	if (attr->table.sz_col_log + attr->table.sz_row_log < caps->ste_alloc_log_gran) {
-		DR_LOG(ERR, "Total matcher size below limit %d", caps->ste_alloc_log_gran);
-		goto not_supported;
-	}
-
-	return 0;
+	return mlx5dr_matcher_check_attr_sz(caps, attr);
 
 not_supported:
 	rte_errno = EOPNOTSUPP;