[PATCH net-next 09/15] net/mlx5e: psp: Adjust rx_check FT size and use a drop_group
From: Tariq Toukan <tariqt@nvidia.com>
Date: 2026-07-07 13:11:43
Also in:
linux-rdma, lkml
Subsystem:
mellanox ethernet driver (mlx5e), mellanox ethernet innova drivers, mellanox mlx5 core vpi driver, networking drivers, the rest · Maintainers:
Saeed Mahameed, Tariq Toukan, Mark Bloch, Leon Romanovsky, Andrew Lunn, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Torvalds
From: Cosmin Ratiu <redacted>
The rx_check ft was requesting max_fte == 2, but it created 4 entries.
While this accidentally works, it's not accurate, so change that and use
the correct number of entries. Also use an explicit drop_group for the
last match(*) drop rule.
Signed-off-by: Cosmin Ratiu <redacted>
Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
---
.../net/ethernet/mellanox/mlx5/core/en_accel/psp.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
index c83d62724ff7..f8b289c50a42 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
@@ -31,6 +31,7 @@ struct mlx5e_psp_tx_table {
struct mlx5e_psp_rx_check_table {
struct mlx5_flow_table *ft;
+ struct mlx5_flow_group *drop_group;
struct mlx5_flow_handle *rule;
struct mlx5_flow_handle *auth_fail_rule;
struct mlx5_flow_handle *err_rule;@@ -165,6 +166,7 @@ void accel_psp_fs_rx_check_ft_destroy(struct mlx5e_psp_fs *fs,
accel_psp_fs_del_flow_rule(&check->err_rule);
accel_psp_fs_del_flow_rule(&check->auth_fail_rule);
accel_psp_fs_del_flow_rule(&check->rule);
+ accel_psp_fs_destroy_flow_group(&check->drop_group);
accel_psp_fs_destroy_ft(&check->ft);
}
@@ -218,7 +220,8 @@ int accel_psp_fs_rx_check_ft_create(struct mlx5e_psp_fs *fs,
if (!spec)
return -ENOMEM;
- ft_attr.max_fte = 2;
+ ft_attr.max_fte = 4;
+ ft_attr.autogroup.num_reserved_entries = 1;
ft_attr.autogroup.max_num_groups = 2;
ft_attr.level = MLX5E_ACCEL_FS_ESP_FT_ERR_LEVEL;
ft_attr.prio = MLX5E_NIC_PRIO;
@@ -229,6 +232,14 @@ int accel_psp_fs_rx_check_ft_create(struct mlx5e_psp_fs *fs,
goto out_err;
}
+ err = accel_psp_fs_create_miss_group(check->ft, &check->drop_group);
+ if (err) {
+ mlx5_core_err(fs->mdev,
+ "fail to create psp rx check drop group err=%d\n",
+ err);
+ goto out_err;
+ }
+
accel_psp_setup_syndrome_match(spec, PSP_OK);
/* create fte */
flow_act.action = MLX5_FLOW_CONTEXT_ACTION_FWD_DEST |--
2.44.0