net: switchdev: introduce helper for checking dynamically learned FDB entries
authorVladimir Oltean <vladimir.oltean@nxp.com>
Mon, 19 Jul 2021 13:51:38 +0000 (16:51 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 20 Jul 2021 14:04:27 +0000 (07:04 -0700)
It is a bit difficult to understand what DSA checks when it tries to
avoid installing dynamically learned addresses on foreign interfaces as
local host addresses, so create a generic switchdev helper that can be
reused and is generally more readable.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/switchdev.h
net/dsa/slave.c

index e4cac92..745eb25 100644 (file)
@@ -238,6 +238,12 @@ switchdev_notifier_info_to_extack(const struct switchdev_notifier_info *info)
        return info->extack;
 }
 
+static inline bool
+switchdev_fdb_is_dynamically_learned(const struct switchdev_notifier_fdb_info *fdb_info)
+{
+       return !fdb_info->added_by_user && !fdb_info->is_local;
+}
+
 #ifdef CONFIG_NET_SWITCHDEV
 
 void switchdev_deferred_process(void);
index ffbba1e..feb64f5 100644 (file)
@@ -2438,7 +2438,7 @@ static int dsa_slave_switchdev_event(struct notifier_block *unused,
                         * On the other hand, FDB entries for local termination
                         * should always be installed.
                         */
-                       if (!fdb_info->added_by_user && !fdb_info->is_local &&
+                       if (switchdev_fdb_is_dynamically_learned(fdb_info) &&
                            !dp->ds->assisted_learning_on_cpu_port)
                                return NOTIFY_DONE;