]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
net/mlx5: Bridge, extract FDB delete notification to function
authorVlad Buslov <vladbu@nvidia.com>
Fri, 23 Jul 2021 08:15:13 +0000 (11:15 +0300)
committerSaeed Mahameed <saeedm@nvidia.com>
Mon, 16 Aug 2021 23:17:31 +0000 (16:17 -0700)
SWITCHDEV_FDB_DEL_TO_BRIDGE notification is generated in multiple places in
bridge code. Following patch in series changes the condition for the
notification. Extract the notification into dedicated helper function
mlx5_esw_bridge_fdb_del_notify() to only modify it in single place in the
future changes.

Signed-off-by: Vlad Buslov <vladbu@nvidia.com>
Reviewed-by: Roi Dayan <roid@nvidia.com>
Reviewed-by: Mark Bloch <mbloch@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/esw/bridge.c

index 65173db2a2f4ea38ec735bacc09568b72f51e36d..5f5571190ffe9e4606b7eba1ecc56a8745641f49 100644 (file)
@@ -76,6 +76,15 @@ mlx5_esw_bridge_fdb_offload_notify(struct net_device *dev, const unsigned char *
        call_switchdev_notifiers(val, dev, &send_info.info, NULL);
 }
 
+static void
+mlx5_esw_bridge_fdb_del_notify(struct mlx5_esw_bridge_fdb_entry *entry)
+{
+       if (!(entry->flags & MLX5_ESW_BRIDGE_FLAG_ADDED_BY_USER))
+               mlx5_esw_bridge_fdb_offload_notify(entry->dev, entry->key.addr,
+                                                  entry->key.vid,
+                                                  SWITCHDEV_FDB_DEL_TO_BRIDGE);
+}
+
 static struct mlx5_flow_table *
 mlx5_esw_bridge_table_create(int max_fte, u32 level, struct mlx5_eswitch *esw)
 {
@@ -699,10 +708,7 @@ static void mlx5_esw_bridge_fdb_flush(struct mlx5_esw_bridge *bridge)
        struct mlx5_esw_bridge_fdb_entry *entry, *tmp;
 
        list_for_each_entry_safe(entry, tmp, &bridge->fdb_list, list) {
-               if (!(entry->flags & MLX5_ESW_BRIDGE_FLAG_ADDED_BY_USER))
-                       mlx5_esw_bridge_fdb_offload_notify(entry->dev, entry->key.addr,
-                                                          entry->key.vid,
-                                                          SWITCHDEV_FDB_DEL_TO_BRIDGE);
+               mlx5_esw_bridge_fdb_del_notify(entry);
                mlx5_esw_bridge_fdb_entry_cleanup(entry, bridge);
        }
 }
@@ -850,10 +856,7 @@ static void mlx5_esw_bridge_vlan_flush(struct mlx5_esw_bridge_vlan *vlan,
        struct mlx5_esw_bridge_fdb_entry *entry, *tmp;
 
        list_for_each_entry_safe(entry, tmp, &vlan->fdb_list, vlan_list) {
-               if (!(entry->flags & MLX5_ESW_BRIDGE_FLAG_ADDED_BY_USER))
-                       mlx5_esw_bridge_fdb_offload_notify(entry->dev, entry->key.addr,
-                                                          entry->key.vid,
-                                                          SWITCHDEV_FDB_DEL_TO_BRIDGE);
+               mlx5_esw_bridge_fdb_del_notify(entry);
                mlx5_esw_bridge_fdb_entry_cleanup(entry, bridge);
        }
 
@@ -1241,9 +1244,7 @@ void mlx5_esw_bridge_fdb_remove(struct net_device *dev, u16 vport_num, u16 esw_o
                return;
        }
 
-       if (!(entry->flags & MLX5_ESW_BRIDGE_FLAG_ADDED_BY_USER))
-               mlx5_esw_bridge_fdb_offload_notify(dev, entry->key.addr, entry->key.vid,
-                                                  SWITCHDEV_FDB_DEL_TO_BRIDGE);
+       mlx5_esw_bridge_fdb_del_notify(entry);
        mlx5_esw_bridge_fdb_entry_cleanup(entry, bridge);
 }
 
@@ -1263,9 +1264,7 @@ void mlx5_esw_bridge_update(struct mlx5_esw_bridge_offloads *br_offloads)
                        if (time_after(lastuse, entry->lastuse)) {
                                mlx5_esw_bridge_fdb_entry_refresh(lastuse, entry);
                        } else if (time_is_before_jiffies(entry->lastuse + bridge->ageing_time)) {
-                               mlx5_esw_bridge_fdb_offload_notify(entry->dev, entry->key.addr,
-                                                                  entry->key.vid,
-                                                                  SWITCHDEV_FDB_DEL_TO_BRIDGE);
+                               mlx5_esw_bridge_fdb_del_notify(entry);
                                mlx5_esw_bridge_fdb_entry_cleanup(entry, bridge);
                        }
                }