]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net/mlx5: E-switch, Introduce flag to indicate if fdb table is created
authorChris Mi <cmi@nvidia.com>
Thu, 5 May 2022 06:23:39 +0000 (09:23 +0300)
committerSaeed Mahameed <saeedm@nvidia.com>
Sat, 2 Jul 2022 18:58:25 +0000 (11:58 -0700)
Introduce flag to indicate if fdb table is created as a pre-step
to prepare for removing dependency between sriov and eswitch mode
in the downstream patches.

Signed-off-by: Chris Mi <cmi@nvidia.com>
Reviewed-by: Mark Bloch <mbloch@nvidia.com>
Reviewed-by: Roi Dayan <roid@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h

index 823bfcff7846d4bd64ca386736593a05f12a3e85..b9a3473f5672cd9f430960c35e13a51767dff860 100644 (file)
@@ -1274,6 +1274,8 @@ int mlx5_eswitch_enable_locked(struct mlx5_eswitch *esw, int mode, int num_vfs)
        if (err)
                goto abort;
 
+       esw->fdb_table.flags |= MLX5_ESW_FDB_CREATED;
+
        mlx5_eswitch_event_handlers_register(esw);
 
        esw_info(esw->dev, "Enable: mode(%s), nvfs(%d), active vports(%d)\n",
@@ -1356,6 +1358,7 @@ void mlx5_eswitch_disable_locked(struct mlx5_eswitch *esw, bool clear_vf)
 
        mlx5_eswitch_event_handlers_unregister(esw);
 
+       esw->fdb_table.flags &= ~MLX5_ESW_FDB_CREATED;
        if (esw->mode == MLX5_ESWITCH_LEGACY)
                esw_legacy_disable(esw);
        else if (esw->mode == MLX5_ESWITCH_OFFLOADS)
index a08f5315d768ff12c2b19fb172ad0900a021f3eb..a9ba0e324834a537a8cdb46f5bd9627f7066eba9 100644 (file)
@@ -287,6 +287,10 @@ enum {
 
 struct mlx5_esw_bridge_offloads;
 
+enum {
+       MLX5_ESW_FDB_CREATED = BIT(0),
+};
+
 struct mlx5_eswitch {
        struct mlx5_core_dev    *dev;
        struct mlx5_nb          nb;
@@ -576,6 +580,11 @@ mlx5_esw_devlink_port_index_to_vport_num(unsigned int dl_port_index)
        return dl_port_index & 0xffff;
 }
 
+static inline bool mlx5_esw_is_fdb_created(struct mlx5_eswitch *esw)
+{
+       return esw->fdb_table.flags & MLX5_ESW_FDB_CREATED;
+}
+
 /* TODO: This mlx5e_tc function shouldn't be called by eswitch */
 void mlx5e_tc_clean_fdb_peer_flows(struct mlx5_eswitch *esw);