bridge: Let bridge not age 'externally' learnt FDB entries, they are removed when...
authorSiva Mannem <siva.mannem.lnx@gmail.com>
Mon, 2 Feb 2015 17:21:54 +0000 (22:51 +0530)
committerDavid S. Miller <davem@davemloft.net>
Wed, 4 Feb 2015 21:51:10 +0000 (13:51 -0800)
When 'learned_sync' flag is turned on, the offloaded switch
 port syncs learned MAC addresses to bridge's FDB via switchdev notifier
 (NETDEV_SWITCH_FDB_ADD). Currently, FDB entries learnt via this mechanism are
 wrongly being deleted by bridge aging logic. This patch ensures that FDB
 entries synced from offloaded switch ports are not deleted by bridging logic.
 Such entries can only be deleted via switchdev notifier
 (NETDEV_SWITCH_FDB_DEL).

Signed-off-by: Siva Mannem <siva.mannem.lnx@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/br_fdb.c

index 08bf04bdac584ddfe6329967727d5afa71dac264..6eb94b58637a72f5e5a435799f391b5338bc683b 100644 (file)
@@ -280,7 +280,7 @@ void br_fdb_cleanup(unsigned long _data)
 
                hlist_for_each_entry_safe(f, n, &br->hash[i], hlist) {
                        unsigned long this_timer;
-                       if (f->is_static)
+                       if (f->is_static || f->added_by_external_learn)
                                continue;
                        this_timer = f->updated + delay;
                        if (time_before_eq(this_timer, jiffies))