mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-20 00:46:46 +07:00
mlxsw: spectrum: Allow controlling destruction of default port VLAN
The function allows flushing all the existing VLAN entries on a port. It is invoked when a port is destroyed and when it is unlinked from a LAG. In the latter case, when moving to the new default VLAN, there will not be a need to destroy the default VLAN entry. Therefore, add an argument that allows to control whether the default port VLAN should be destroyed or not. Currently it is always set to 'true'. Signed-off-by: Ido Schimmel <idosch@mellanox.com> Reviewed-by: Petr Machata <petrm@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
262e1ff91c
commit
ab6c3b79ec
@ -1140,13 +1140,18 @@ int mlxsw_sp_port_vlan_set(struct mlxsw_sp_port *mlxsw_sp_port, u16 vid_begin,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void mlxsw_sp_port_vlan_flush(struct mlxsw_sp_port *mlxsw_sp_port)
|
||||
static void mlxsw_sp_port_vlan_flush(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||
bool flush_default)
|
||||
{
|
||||
struct mlxsw_sp_port_vlan *mlxsw_sp_port_vlan, *tmp;
|
||||
|
||||
list_for_each_entry_safe(mlxsw_sp_port_vlan, tmp,
|
||||
&mlxsw_sp_port->vlans_list, list)
|
||||
&mlxsw_sp_port->vlans_list, list) {
|
||||
if (!flush_default &&
|
||||
mlxsw_sp_port_vlan->vid == MLXSW_SP_DEFAULT_VID)
|
||||
continue;
|
||||
mlxsw_sp_port_vlan_destroy(mlxsw_sp_port_vlan);
|
||||
}
|
||||
}
|
||||
|
||||
struct mlxsw_sp_port_vlan *
|
||||
@ -3258,7 +3263,7 @@ static void mlxsw_sp_port_remove(struct mlxsw_sp *mlxsw_sp, u8 local_port)
|
||||
unregister_netdev(mlxsw_sp_port->dev); /* This calls ndo_stop */
|
||||
mlxsw_sp->ports[local_port] = NULL;
|
||||
mlxsw_sp_port_switchdev_fini(mlxsw_sp_port);
|
||||
mlxsw_sp_port_vlan_flush(mlxsw_sp_port);
|
||||
mlxsw_sp_port_vlan_flush(mlxsw_sp_port, true);
|
||||
mlxsw_sp_port_nve_fini(mlxsw_sp_port);
|
||||
mlxsw_sp_tc_qdisc_fini(mlxsw_sp_port);
|
||||
mlxsw_sp_port_fids_fini(mlxsw_sp_port);
|
||||
@ -4724,7 +4729,7 @@ static void mlxsw_sp_port_lag_leave(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||
mlxsw_sp_lag_col_port_remove(mlxsw_sp_port, lag_id);
|
||||
|
||||
/* Any VLANs configured on the port are no longer valid */
|
||||
mlxsw_sp_port_vlan_flush(mlxsw_sp_port);
|
||||
mlxsw_sp_port_vlan_flush(mlxsw_sp_port, true);
|
||||
/* Make the LAG and its directly linked uppers leave bridges they
|
||||
* are memeber in
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user