Commit 6311f308 authored by Gavi Teitz's avatar Gavi Teitz Committed by Saeed Mahameed
Browse files

net/mlx5: MPFS, Cleanup add MAC flow



Unify and isolate the error handling flow in mlx5_mpfs_add_mac(),
removing code duplication.

Signed-off-by: default avatarGavi Teitz <gavi@mellanox.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
parent 4f5d1bea
Loading
Loading
Loading
Loading
+15 −11
Original line number Diff line number Diff line
@@ -134,8 +134,8 @@ int mlx5_mpfs_add_mac(struct mlx5_core_dev *dev, u8 *mac)
{
	struct mlx5_mpfs *mpfs = dev->priv.mpfs;
	struct l2table_node *l2addr;
	int err = 0;
	u32 index;
	int err;

	if (!MLX5_ESWITCH_MANAGER(dev))
		return 0;
@@ -145,29 +145,33 @@ int mlx5_mpfs_add_mac(struct mlx5_core_dev *dev, u8 *mac)
	l2addr = l2addr_hash_find(mpfs->hash, mac, struct l2table_node);
	if (l2addr) {
		err = -EEXIST;
		goto abort;
		goto out;
	}

	err = alloc_l2table_index(mpfs, &index);
	if (err)
		goto abort;
		goto out;

	l2addr = l2addr_hash_add(mpfs->hash, mac, struct l2table_node, GFP_KERNEL);
	if (!l2addr) {
		free_l2table_index(mpfs, index);
		err = -ENOMEM;
		goto abort;
		goto hash_add_err;
	}

	l2addr->index = index;
	err = set_l2table_entry_cmd(dev, index, mac);
	if (err) {
		l2addr_hash_del(l2addr);
		free_l2table_index(mpfs, index);
	}
	if (err)
		goto set_table_entry_err;

	l2addr->index = index;

	mlx5_core_dbg(dev, "MPFS mac added %pM, index (%d)\n", mac, index);
abort:
	goto out;

set_table_entry_err:
	l2addr_hash_del(l2addr);
hash_add_err:
	free_l2table_index(mpfs, index);
out:
	mutex_unlock(&mpfs->lock);
	return err;
}