net/mlx5: Allocate smaller size tables for ft offload
authorPaul Blakey <paulb@mellanox.com>
Wed, 8 Jan 2020 12:31:53 +0000 (14:31 +0200)
committerSaeed Mahameed <saeedm@mellanox.com>
Mon, 9 Mar 2020 23:58:40 +0000 (16:58 -0700)
Instead of giving ft tables one of the largest tables available - 4M,
give it a more reasonable size - 64k. Especially since it will
always be created as a miss hook in the following patch.

Signed-off-by: Paul Blakey <paulb@mellanox.com>
Reviewed-by: Mark Bloch <markb@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_chains.c

index d41e4f0..8bfa53e 100644 (file)
@@ -34,6 +34,7 @@ static const unsigned int ESW_POOLS[] = { 4 * 1024 * 1024,
                                          1 * 1024 * 1024,
                                          64 * 1024,
                                          128 };
+#define ESW_FT_TBL_SZ (64 * 1024)
 
 struct mlx5_esw_chains_priv {
        struct rhashtable chains_ht;
@@ -201,7 +202,9 @@ mlx5_esw_chains_create_fdb_table(struct mlx5_eswitch *esw,
                ft_attr.flags |= (MLX5_FLOW_TABLE_TUNNEL_EN_REFORMAT |
                                  MLX5_FLOW_TABLE_TUNNEL_EN_DECAP);
 
-       sz = mlx5_esw_chains_get_avail_sz_from_pool(esw, POOL_NEXT_SIZE);
+       sz = (chain == mlx5_esw_chains_get_ft_chain(esw)) ?
+            mlx5_esw_chains_get_avail_sz_from_pool(esw, ESW_FT_TBL_SZ) :
+            mlx5_esw_chains_get_avail_sz_from_pool(esw, POOL_NEXT_SIZE);
        if (!sz)
                return ERR_PTR(-ENOSPC);
        ft_attr.max_fte = sz;