net: dsa: sync static FDB entries on foreign interfaces to hardware
[linux-2.6-microblaze.git] / net / dsa / slave.c
index ac7f4f2..ea9a7c1 100644 (file)
@@ -2403,9 +2403,12 @@ static int dsa_slave_switchdev_event(struct notifier_block *unused,
 
                        dp = dsa_slave_to_port(dev);
                } else {
-                       /* Snoop addresses learnt on foreign interfaces
-                        * bridged with us, for switches that don't
-                        * automatically learn SA from CPU-injected traffic
+                       /* Snoop addresses added to foreign interfaces
+                        * bridged with us, or the bridge
+                        * itself. Dynamically learned addresses can
+                        * also be added for switches that don't
+                        * automatically learn SA from CPU-injected
+                        * traffic.
                         */
                        struct net_device *br_dev;
                        struct dsa_slave_priv *p;
@@ -2424,7 +2427,8 @@ static int dsa_slave_switchdev_event(struct notifier_block *unused,
                        dp = p->dp;
                        host_addr = true;
 
-                       if (!dp->ds->assisted_learning_on_cpu_port)
+                       if (!fdb_info->added_by_user &&
+                           !dp->ds->assisted_learning_on_cpu_port)
                                return NOTIFY_DONE;
 
                        /* When the bridge learns an address on an offloaded