mlxsw: spectrum: Notify bridge's FDB only based on learning_sync
When we disable learning on bridge port we should still update the
software bridge's FDB when entry pointing to this bridge port is
aged-out. We can otherwise have an inconsistency between software and
hardware tables.
Fixes: 8a1ab5d766
("mlxsw: spectrum: Implement FDB add/remove/dump for LAG")
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
454911333b
commit
45827d780a
|
@ -1202,14 +1202,14 @@ static const struct switchdev_ops mlxsw_sp_port_switchdev_ops = {
|
|||
.switchdev_port_obj_dump = mlxsw_sp_port_obj_dump,
|
||||
};
|
||||
|
||||
static void mlxsw_sp_fdb_call_notifiers(bool learning, bool learning_sync,
|
||||
bool adding, char *mac, u16 vid,
|
||||
static void mlxsw_sp_fdb_call_notifiers(bool learning_sync, bool adding,
|
||||
char *mac, u16 vid,
|
||||
struct net_device *dev)
|
||||
{
|
||||
struct switchdev_notifier_fdb_info info;
|
||||
unsigned long notifier_type;
|
||||
|
||||
if (learning && learning_sync) {
|
||||
if (learning_sync) {
|
||||
info.addr = mac;
|
||||
info.vid = vid;
|
||||
notifier_type = adding ? SWITCHDEV_FDB_ADD : SWITCHDEV_FDB_DEL;
|
||||
|
@ -1265,8 +1265,7 @@ static void mlxsw_sp_fdb_notify_mac_process(struct mlxsw_sp *mlxsw_sp,
|
|||
|
||||
if (!do_notification)
|
||||
return;
|
||||
mlxsw_sp_fdb_call_notifiers(mlxsw_sp_port->learning,
|
||||
mlxsw_sp_port->learning_sync,
|
||||
mlxsw_sp_fdb_call_notifiers(mlxsw_sp_port->learning_sync,
|
||||
adding, mac, vid, mlxsw_sp_port->dev);
|
||||
return;
|
||||
|
||||
|
@ -1327,9 +1326,8 @@ static void mlxsw_sp_fdb_notify_mac_lag_process(struct mlxsw_sp *mlxsw_sp,
|
|||
|
||||
if (!do_notification)
|
||||
return;
|
||||
mlxsw_sp_fdb_call_notifiers(mlxsw_sp_port->learning,
|
||||
mlxsw_sp_port->learning_sync,
|
||||
adding, mac, vid,
|
||||
mlxsw_sp_fdb_call_notifiers(mlxsw_sp_port->learning_sync, adding, mac,
|
||||
vid,
|
||||
mlxsw_sp_lag_get(mlxsw_sp, lag_id)->dev);
|
||||
return;
|
||||
|
||||
|
|
Loading…
Reference in New Issue