From: Gal Pressman <galp@mellanox.com>
Date: Thu, 14 Sep 2017 16:24:19 +0300
Subject: net/mlx5e: Add rollback on add VLAN failure
Patch-mainline: v4.15-rc1
Git-commit: 355368d530460aa19b9d4291e2da2c6fd8929c76
References: bsc#1046303 FATE#322944
When add VLAN rule fails the active vlan bit should be cleared.
Fixes: afb736e9330a ("net/mlx5: Ethernet resource handling files")
Signed-off-by: Gal Pressman <galp@mellanox.com>
Reviewed-by: Maor Gottlieb <maorg@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
---
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
@@ -309,10 +309,15 @@ int mlx5e_vlan_rx_add_vid(struct net_dev
u16 vid)
{
struct mlx5e_priv *priv = netdev_priv(dev);
+ int err;
set_bit(vid, priv->fs.vlan.active_vlans);
- return mlx5e_add_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_MATCH_VID, vid);
+ err = mlx5e_add_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_MATCH_VID, vid);
+ if (err)
+ clear_bit(vid, priv->fs.vlan.active_vlans);
+
+ return err;
}
int mlx5e_vlan_rx_kill_vid(struct net_device *dev, __always_unused __be16 proto,