|
@@ -34,6 +34,7 @@ static int br_device_event(struct notifier_block *unused, unsigned long event, v
|
|
|
struct net_device *dev = ptr;
|
|
|
struct net_bridge_port *p;
|
|
|
struct net_bridge *br;
|
|
|
+ bool changed_addr;
|
|
|
int err;
|
|
|
|
|
|
/* register of bridge completed, add sysfs entries */
|
|
@@ -57,8 +58,12 @@ static int br_device_event(struct notifier_block *unused, unsigned long event, v
|
|
|
case NETDEV_CHANGEADDR:
|
|
|
spin_lock_bh(&br->lock);
|
|
|
br_fdb_changeaddr(p, dev->dev_addr);
|
|
|
- br_stp_recalculate_bridge_id(br);
|
|
|
+ changed_addr = br_stp_recalculate_bridge_id(br);
|
|
|
spin_unlock_bh(&br->lock);
|
|
|
+
|
|
|
+ if (changed_addr)
|
|
|
+ call_netdevice_notifiers(NETDEV_CHANGEADDR, br->dev);
|
|
|
+
|
|
|
break;
|
|
|
|
|
|
case NETDEV_CHANGE:
|