net/mlx5e: Nullify table pointer when failing to create
authorAya Levin <ayal@nvidia.com>
Sun, 12 Mar 2023 14:37:36 +0000 (16:37 +0200)
committerSaeed Mahameed <saeedm@nvidia.com>
Fri, 21 Apr 2023 01:47:33 +0000 (18:47 -0700)
On failing to create promisc flow steering table, the pointer is
returned with an error. Nullify it so unloading the driver won't try to
destroy a non existing table.

Failing to create promisc table may happen over BF devices when the ARM
side is going through a firmware tear down. The host side start a
reload flow. While the driver unloads, it tries to remove the promisc
table. Remove WARN in this state as it is a valid error flow.

Fixes: 1c46d7409f30 ("net/mlx5e: Optimize promiscuous mode")
Signed-off-by: Aya Levin <ayal@nvidia.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c

index f1dac02..33bfe4d 100644 (file)
@@ -783,6 +783,7 @@ static int mlx5e_create_promisc_table(struct mlx5e_flow_steering *fs)
        ft->t = mlx5_create_auto_grouped_flow_table(fs->ns, &ft_attr);
        if (IS_ERR(ft->t)) {
                err = PTR_ERR(ft->t);
+               ft->t = NULL;
                fs_err(fs, "fail to create promisc table err=%d\n", err);
                return err;
        }
@@ -810,7 +811,7 @@ static void mlx5e_del_promisc_rule(struct mlx5e_flow_steering *fs)
 
 static void mlx5e_destroy_promisc_table(struct mlx5e_flow_steering *fs)
 {
-       if (WARN(!fs->promisc.ft.t, "Trying to remove non-existing promiscuous table"))
+       if (!fs->promisc.ft.t)
                return;
        mlx5e_del_promisc_rule(fs);
        mlx5_destroy_flow_table(fs->promisc.ft.t);