OSDN Git Service

net/mlx5: ft: Use getter function to get ft chain
authorPaul Blakey <paulb@mellanox.com>
Tue, 26 Nov 2019 12:13:42 +0000 (14:13 +0200)
committerSaeed Mahameed <saeedm@mellanox.com>
Thu, 16 Jan 2020 23:48:58 +0000 (15:48 -0800)
FT chain is defined as the next chain after tc.

To prepare for next patches that will increase the number of tc
chains available at runtime, use a getter function to get this
value.

The define is still used in static fs_core allocation,
to calculate the number of chains. This static allocation
will be used if the relevant capabilities won't be available
to support dynamic chains.

Signed-off-by: Paul Blakey <paulb@mellanox.com>
Reviewed-by: Roi Dayan <roid@mellanox.com>
Reviewed-by: Mark Bloch <markb@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c

index f175cb2..d85b564 100644 (file)
@@ -1268,7 +1268,7 @@ static int mlx5e_rep_setup_ft_cb(enum tc_setup_type type, void *type_data,
                 * reserved ft chain.
                 */
                memcpy(&cls_flower, f, sizeof(*f));
-               cls_flower.common.chain_index = FDB_FT_CHAIN;
+               cls_flower.common.chain_index = mlx5_eswitch_get_ft_chain(esw);
                err = mlx5e_rep_setup_tc_cls_flower(priv, &cls_flower, flags);
                memcpy(&f->stats, &cls_flower.stats, sizeof(f->stats));
                return err;
index ffcff3b..69ff303 100644 (file)
@@ -364,6 +364,9 @@ mlx5_eswitch_get_prio_range(struct mlx5_eswitch *esw);
 u32
 mlx5_eswitch_get_chain_range(struct mlx5_eswitch *esw);
 
+unsigned int
+mlx5_eswitch_get_ft_chain(struct mlx5_eswitch *esw);
+
 struct mlx5_flow_handle *
 mlx5_eswitch_create_vport_rx_rule(struct mlx5_eswitch *esw, u16 vport,
                                  struct mlx5_flow_destination *dest);
index 4b0d992..81bafd4 100644 (file)
@@ -80,6 +80,11 @@ u32 mlx5_eswitch_get_chain_range(struct mlx5_eswitch *esw)
        return 0;
 }
 
+u32 mlx5_eswitch_get_ft_chain(struct mlx5_eswitch *esw)
+{
+       return mlx5_eswitch_get_chain_range(esw) + 1;
+}
+
 u16 mlx5_eswitch_get_prio_range(struct mlx5_eswitch *esw)
 {
        if (esw->fdb_table.flags & ESW_FDB_CHAINS_AND_PRIOS_SUPPORTED)