mlxsw: spectrum_fid: Store 'bridge_type' as part of FID family
authorAmit Cohen <amcohen@nvidia.com>
Mon, 27 Jun 2022 07:06:12 +0000 (10:06 +0300)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 28 Jun 2022 12:31:36 +0000 (14:31 +0200)
Currently, 'bridge_type' is an attribute of 'struct mlxsw_sp_flood_table',
which is defined per FID family. Instead, it can be an attribute of
'struct mlxsw_sp_fid_family' as all flood tables in the same family are of
the same type. This change will ease the configuration of
'SFMR.flood_bridge_type' which will be added in the next patch.

Signed-off-by: Amit Cohen <amcohen@nvidia.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c

index ef4d8dd..279e65a 100644 (file)
@@ -71,7 +71,6 @@ static const struct rhashtable_params mlxsw_sp_fid_vni_ht_params = {
 
 struct mlxsw_sp_flood_table {
        enum mlxsw_sp_flood_type packet_type;
-       enum mlxsw_reg_bridge_type bridge_type;
        enum mlxsw_flood_table_type table_type;
        int table_index;
 };
@@ -110,6 +109,7 @@ struct mlxsw_sp_fid_family {
        const struct mlxsw_sp_fid_ops *ops;
        struct mlxsw_sp *mlxsw_sp;
        bool flood_rsp;
+       enum mlxsw_reg_bridge_type bridge_type;
 };
 
 static const int mlxsw_sp_sfgc_uc_packet_types[MLXSW_REG_SFGC_TYPE_MAX] = {
@@ -709,19 +709,16 @@ static const struct mlxsw_sp_fid_ops mlxsw_sp_fid_8021d_ops = {
 static const struct mlxsw_sp_flood_table mlxsw_sp_fid_8021d_flood_tables[] = {
        {
                .packet_type    = MLXSW_SP_FLOOD_TYPE_UC,
-               .bridge_type    = MLXSW_REG_BRIDGE_TYPE_1,
                .table_type     = MLXSW_REG_SFGC_TABLE_TYPE_FID,
                .table_index    = 0,
        },
        {
                .packet_type    = MLXSW_SP_FLOOD_TYPE_MC,
-               .bridge_type    = MLXSW_REG_BRIDGE_TYPE_1,
                .table_type     = MLXSW_REG_SFGC_TABLE_TYPE_FID,
                .table_index    = 1,
        },
        {
                .packet_type    = MLXSW_SP_FLOOD_TYPE_BC,
-               .bridge_type    = MLXSW_REG_BRIDGE_TYPE_1,
                .table_type     = MLXSW_REG_SFGC_TABLE_TYPE_FID,
                .table_index    = 2,
        },
@@ -737,6 +734,7 @@ static const struct mlxsw_sp_fid_family mlxsw_sp_fid_8021d_family = {
        .nr_flood_tables        = ARRAY_SIZE(mlxsw_sp_fid_8021d_flood_tables),
        .rif_type               = MLXSW_SP_RIF_TYPE_FID,
        .ops                    = &mlxsw_sp_fid_8021d_ops,
+       .bridge_type            = MLXSW_REG_BRIDGE_TYPE_1,
 };
 
 static bool
@@ -785,6 +783,7 @@ static const struct mlxsw_sp_fid_family mlxsw_sp_fid_8021q_emu_family = {
        .nr_flood_tables        = ARRAY_SIZE(mlxsw_sp_fid_8021d_flood_tables),
        .rif_type               = MLXSW_SP_RIF_TYPE_VLAN_EMU,
        .ops                    = &mlxsw_sp_fid_8021q_emu_ops,
+       .bridge_type            = MLXSW_REG_BRIDGE_TYPE_1,
 };
 
 static void mlxsw_sp_fid_rfid_setup(struct mlxsw_sp_fid *fid, const void *arg)
@@ -1132,7 +1131,7 @@ mlxsw_sp_fid_flood_table_init(struct mlxsw_sp_fid_family *fid_family,
 
                if (!sfgc_packet_types[i])
                        continue;
-               mlxsw_reg_sfgc_pack(sfgc_pl, i, flood_table->bridge_type,
+               mlxsw_reg_sfgc_pack(sfgc_pl, i, fid_family->bridge_type,
                                    flood_table->table_type,
                                    flood_table->table_index);
                err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfgc), sfgc_pl);