]> git.itanic.dy.fi Git - linux-stable/commitdiff
net/mlx5: DR, Support decap L3 action using pattern / arg mechanism
authorYevgeny Kliteynik <kliteyn@nvidia.com>
Tue, 15 Nov 2022 00:36:07 +0000 (02:36 +0200)
committerSaeed Mahameed <saeedm@nvidia.com>
Fri, 14 Apr 2023 22:06:22 +0000 (15:06 -0700)
Use the new accelerated action for decap L3 on RX side:
use the mechanism of pattern and argument same as in
modify-header action.

Signed-off-by: Erez Shitrit <erezsh@nvidia.com>
Signed-off-by: Yevgeny Kliteynik <kliteyn@nvidia.com>
Reviewed-by: Alex Vesker <valex@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_action.c

index 98e3d4f572ebd1d680e9dd02cc1b30695cae1f3a..8f8f0a0b38fd07699e592f1fd22b794ae4ef0c8f 100644 (file)
@@ -1428,23 +1428,12 @@ dr_action_create_reformat_action(struct mlx5dr_domain *dmn,
                        return ret;
                }
 
-               action->rewrite->chunk = mlx5dr_icm_alloc_chunk(dmn->action_icm_pool,
-                                                               DR_CHUNK_SIZE_8);
-               if (!action->rewrite->chunk) {
-                       mlx5dr_dbg(dmn, "Failed allocating modify header chunk\n");
-                       return -ENOMEM;
-               }
-
-               action->rewrite->data = (void *)hw_actions;
-               action->rewrite->index = (mlx5dr_icm_pool_get_chunk_icm_addr
-                                         (action->rewrite->chunk) -
-                                        dmn->info.caps.hdr_modify_icm_addr) /
-                                        DR_ACTION_CACHE_LINE_SIZE;
+               action->rewrite->data = hw_actions;
+               action->rewrite->dmn = dmn;
 
-               ret = mlx5dr_send_postsend_action(dmn, action);
+               ret = mlx5dr_ste_alloc_modify_hdr(action);
                if (ret) {
-                       mlx5dr_dbg(dmn, "Writing decap l3 actions to ICM failed\n");
-                       mlx5dr_icm_free_chunk(action->rewrite->chunk);
+                       mlx5dr_dbg(dmn, "Failed preparing reformat data\n");
                        return ret;
                }
                return 0;
@@ -2161,7 +2150,7 @@ int mlx5dr_action_destroy(struct mlx5dr_action *action)
                refcount_dec(&action->reformat->dmn->refcount);
                break;
        case DR_ACTION_TYP_TNL_L3_TO_L2:
-               mlx5dr_icm_free_chunk(action->rewrite->chunk);
+               mlx5dr_ste_free_modify_hdr(action);
                refcount_dec(&action->rewrite->dmn->refcount);
                break;
        case DR_ACTION_TYP_L2_TO_TNL_L2: