OSDN Git Service

net: bridge: fdb: restore unlikely() when taking over externally added entries
authorNikolay Aleksandrov <nikolay@cumulusnetworks.com>
Fri, 1 Nov 2019 12:46:39 +0000 (14:46 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 1 Nov 2019 17:32:43 +0000 (10:32 -0700)
Taking over hw-learned entries is not a likely scenario so restore the
unlikely() use for the case of SW taking over externally learned
entries.

Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/br_fdb.c

index 7500c84..284b366 100644 (file)
@@ -587,8 +587,10 @@ void br_fdb_update(struct net_bridge *br, struct net_bridge_port *source,
                                fdb->dst = source;
                                fdb_modified = true;
                                /* Take over HW learned entry */
-                               test_and_clear_bit(BR_FDB_ADDED_BY_EXT_LEARN,
-                                                  &fdb->flags);
+                               if (unlikely(test_bit(BR_FDB_ADDED_BY_EXT_LEARN,
+                                                     &fdb->flags)))
+                                       clear_bit(BR_FDB_ADDED_BY_EXT_LEARN,
+                                                 &fdb->flags);
                        }
                        if (now != fdb->updated)
                                fdb->updated = now;