From: Erez Shitrit <ere...@nvidia.com>

Context creates its pools according to the table type.

Signed-off-by: Erez Shitrit <ere...@nvidia.com>
Signed-off-by: Hamdan Igbaria <hamd...@nvidia.com>
Acked-by: Matan Azrad <ma...@nvidia.com>
---
 drivers/net/mlx5/hws/mlx5dr_context.c | 21 ++++++++++++++++++++-
 drivers/net/mlx5/hws/mlx5dr_context.h |  3 +++
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/drivers/net/mlx5/hws/mlx5dr_context.c 
b/drivers/net/mlx5/hws/mlx5dr_context.c
index 24741afe58..91d05f1f86 100644
--- a/drivers/net/mlx5/hws/mlx5dr_context.c
+++ b/drivers/net/mlx5/hws/mlx5dr_context.c
@@ -19,6 +19,24 @@ uint8_t mlx5dr_context_get_reparse_mode(struct 
mlx5dr_context *ctx)
        return MLX5_IFC_RTC_REPARSE_ALWAYS;
 }
 
+void mlx5dr_context_set_pool_tbl_attr(struct mlx5dr_pool_attr *attr,
+                                     enum mlx5dr_table_type table_type)
+{
+       attr->table_type = table_type;
+
+       switch (table_type) {
+       case MLX5DR_TABLE_TYPE_FDB_TX:
+               attr->opt_type = MLX5DR_POOL_OPTIMIZE_ORIG;
+               break;
+       case MLX5DR_TABLE_TYPE_FDB_RX:
+               attr->opt_type = MLX5DR_POOL_OPTIMIZE_MIRROR;
+               break;
+       default:
+               attr->opt_type = MLX5DR_POOL_OPTIMIZE_NONE;
+               break;
+       }
+}
+
 static int mlx5dr_context_pools_init(struct mlx5dr_context *ctx,
                                     struct mlx5dr_context_attr *attr)
 {
@@ -41,7 +59,8 @@ static int mlx5dr_context_pools_init(struct mlx5dr_context 
*ctx,
        pool_attr.alloc_log_sz = RTE_MAX(max_log_sz, 
ctx->caps->stc_alloc_log_gran);
 
        for (i = 0; i < MLX5DR_TABLE_TYPE_MAX; i++) {
-               pool_attr.table_type = i;
+               mlx5dr_context_set_pool_tbl_attr(&pool_attr,
+                                                (enum mlx5dr_table_type)i);
                ctx->stc_pool[i] = mlx5dr_pool_create(ctx, &pool_attr);
                if (!ctx->stc_pool[i]) {
                        DR_LOG(ERR, "Failed to allocate STC pool [%d]", i);
diff --git a/drivers/net/mlx5/hws/mlx5dr_context.h 
b/drivers/net/mlx5/hws/mlx5dr_context.h
index 7678232ecc..e89a093c77 100644
--- a/drivers/net/mlx5/hws/mlx5dr_context.h
+++ b/drivers/net/mlx5/hws/mlx5dr_context.h
@@ -72,4 +72,7 @@ bool mlx5dr_context_cap_dynamic_reparse(struct mlx5dr_context 
*ctx);
 
 uint8_t mlx5dr_context_get_reparse_mode(struct mlx5dr_context *ctx);
 
+void mlx5dr_context_set_pool_tbl_attr(struct mlx5dr_pool_attr *attr,
+                                     enum mlx5dr_table_type table_type);
+
 #endif /* MLX5DR_CONTEXT_H_ */
-- 
2.21.0

Reply via email to