mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-02 13:23:35 -04:00
mlxsw: spectrum_nve: Make tunnel initialization symmetric
The device supports a single VTEP whose configuration is shared between all VXLAN tunnels. While the shared configuration is cleared upon the destruction of the last tunnel - in mlxsw_sp_nve_tunnel_fini() - it is set in mlxsw_sp_nve_fid_enable(), after calling mlxsw_sp_nve_tunnel_init(). Make tunnel initialization and destruction symmetric and set the configuration in mlxsw_sp_nve_tunnel_init(). This will later allow us to protect the shared configuration with a lock. Signed-off-by: Ido Schimmel <idosch@mellanox.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
b69e1337ff
commit
9ef87b244e
@@ -744,6 +744,8 @@ static int mlxsw_sp_nve_tunnel_init(struct mlxsw_sp *mlxsw_sp,
|
||||
if (nve->num_nve_tunnels++ != 0)
|
||||
return 0;
|
||||
|
||||
nve->config = *config;
|
||||
|
||||
err = mlxsw_sp_kvdl_alloc(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ADJ, 1,
|
||||
&nve->tunnel_index);
|
||||
if (err)
|
||||
@@ -760,6 +762,7 @@ static int mlxsw_sp_nve_tunnel_init(struct mlxsw_sp *mlxsw_sp,
|
||||
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ADJ, 1,
|
||||
nve->tunnel_index);
|
||||
err_kvdl_alloc:
|
||||
memset(&nve->config, 0, sizeof(nve->config));
|
||||
nve->num_nve_tunnels--;
|
||||
return err;
|
||||
}
|
||||
@@ -840,8 +843,6 @@ int mlxsw_sp_nve_fid_enable(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_fid *fid,
|
||||
goto err_fid_vni_set;
|
||||
}
|
||||
|
||||
nve->config = config;
|
||||
|
||||
err = ops->fdb_replay(params->dev, params->vni, extack);
|
||||
if (err)
|
||||
goto err_fdb_replay;
|
||||
|
||||
Reference in New Issue
Block a user