]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
net/mlx5: E-switch, Don't destroy indirect table in split rule
authorChris Mi <cmi@nvidia.com>
Fri, 10 Mar 2023 07:56:08 +0000 (09:56 +0200)
committerSaeed Mahameed <saeedm@nvidia.com>
Fri, 21 Apr 2023 01:47:32 +0000 (18:47 -0700)
Source port rewrite (forward to ovs internal port or statck device) isn't
supported in the rule of split action. So there is no indirect table in
split rule. The cited commit destroyes indirect table in split rule. The
indirect table for other rules will be destroyed wrongly. It will cause
traffic loss.

Fix it by removing the destroy function in split rule. And also remove
the destroy function in error flow.

Fixes: 10742efc20a4 ("net/mlx5e: VF tunnel TX traffic offloading")
Signed-off-by: Chris Mi <cmi@nvidia.com>
Reviewed-by: Roi Dayan <roid@nvidia.com>
Reviewed-by: Maor Dickman <maord@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c

index 706746cd10af56902fb035e58bd132aa74bc029e..c99d208722f58db3497e6779b9fc45649df866b2 100644 (file)
@@ -760,7 +760,6 @@ mlx5_eswitch_add_fwd_rule(struct mlx5_eswitch *esw,
        kfree(dest);
        return rule;
 err_chain_src_rewrite:
-       esw_put_dest_tables_loop(esw, attr, 0, i);
        mlx5_esw_vporttbl_put(esw, &fwd_attr);
 err_get_fwd:
        mlx5_chains_put_table(chains, attr->chain, attr->prio, 0);
@@ -803,7 +802,6 @@ __mlx5_eswitch_del_rule(struct mlx5_eswitch *esw,
        if (fwd_rule)  {
                mlx5_esw_vporttbl_put(esw, &fwd_attr);
                mlx5_chains_put_table(chains, attr->chain, attr->prio, 0);
-               esw_put_dest_tables_loop(esw, attr, 0, esw_attr->split_count);
        } else {
                if (split)
                        mlx5_esw_vporttbl_put(esw, &fwd_attr);