.action = attr->action,
                .flow_tag = attr->flow_tag,
                .reformat_id = 0,
-               .flags    = FLOW_ACT_HAS_TAG,
+               .flags    = FLOW_ACT_HAS_TAG | FLOW_ACT_NO_APPEND,
        };
        struct mlx5_fc *counter = NULL;
        bool table_created = false;
 
                                struct mlx5_esw_flow_attr *attr)
 {
        struct mlx5_flow_destination dest[MLX5_MAX_FLOW_FWD_VPORTS + 1] = {};
+       struct mlx5_flow_act flow_act = { .flags = FLOW_ACT_NO_APPEND, };
        bool mirror = !!(attr->mirror_count);
-       struct mlx5_flow_act flow_act = {0};
        struct mlx5_flow_handle *rule;
        struct mlx5_flow_table *fdb;
        int j, i = 0;
                          struct mlx5_esw_flow_attr *attr)
 {
        struct mlx5_flow_destination dest[MLX5_MAX_FLOW_FWD_VPORTS + 1] = {};
-       struct mlx5_flow_act flow_act = {0};
+       struct mlx5_flow_act flow_act = { .flags = FLOW_ACT_NO_APPEND, };
        struct mlx5_flow_table *fast_fdb;
        struct mlx5_flow_table *fwd_fdb;
        struct mlx5_flow_handle *rule;