|
@@ -2344,8 +2344,15 @@ static int mlxsw_sp_switchdev_event(struct notifier_block *unused,
|
|
|
struct net_device *dev = switchdev_notifier_info_to_dev(ptr);
|
|
|
struct mlxsw_sp_switchdev_event_work *switchdev_work;
|
|
|
struct switchdev_notifier_fdb_info *fdb_info = ptr;
|
|
|
+ struct net_device *br_dev;
|
|
|
|
|
|
- if (!mlxsw_sp_port_dev_lower_find_rcu(dev))
|
|
|
+ /* Tunnel devices are not our uppers, so check their master instead */
|
|
|
+ br_dev = netdev_master_upper_dev_get_rcu(dev);
|
|
|
+ if (!br_dev)
|
|
|
+ return NOTIFY_DONE;
|
|
|
+ if (!netif_is_bridge_master(br_dev))
|
|
|
+ return NOTIFY_DONE;
|
|
|
+ if (!mlxsw_sp_port_dev_lower_find_rcu(br_dev))
|
|
|
return NOTIFY_DONE;
|
|
|
|
|
|
switchdev_work = kzalloc(sizeof(*switchdev_work), GFP_ATOMIC);
|