net/mlx5: Cap the maximum flow group size to 16M entries
The maximum number of large flow groups applies to both small and large tables. For very large tables (such as the 2G SW steering tables) this may create a small number of flow groups each with an unrealistic entries domain (> 16M). Set the maximum number of large flow groups to at least what user requested, but with a maximum per group size of 16M entries. For software steering, if user requested less than 128 large flow groups, it will gives us about 128 16M groups in a 2G entries tables. Signed-off-by: Paul Blakey <paulb@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
parent
9e11799840
commit
71513c05a9
@ -1173,6 +1173,7 @@ mlx5_create_lag_demux_flow_table(struct mlx5_flow_namespace *ns,
|
||||
}
|
||||
EXPORT_SYMBOL(mlx5_create_lag_demux_flow_table);
|
||||
|
||||
#define MAX_FLOW_GROUP_SIZE BIT(24)
|
||||
struct mlx5_flow_table*
|
||||
mlx5_create_auto_grouped_flow_table(struct mlx5_flow_namespace *ns,
|
||||
struct mlx5_flow_table_attr *ft_attr)
|
||||
@ -1192,6 +1193,10 @@ mlx5_create_auto_grouped_flow_table(struct mlx5_flow_namespace *ns,
|
||||
if (num_reserved_entries > ft->max_fte)
|
||||
goto err_validate;
|
||||
|
||||
/* Align the number of groups according to the largest group size */
|
||||
if (autogroups_max_fte / (max_num_groups + 1) > MAX_FLOW_GROUP_SIZE)
|
||||
max_num_groups = (autogroups_max_fte / MAX_FLOW_GROUP_SIZE) - 1;
|
||||
|
||||
ft->autogroup.active = true;
|
||||
ft->autogroup.required_groups = max_num_groups;
|
||||
ft->autogroup.max_fte = autogroups_max_fte;
|
||||
|
Loading…
Reference in New Issue
Block a user