Skip to content

Commit 6ff51ab

Browse files
Awik84Saeed Mahameed
authored and
Saeed Mahameed
committed
net/mlx5: Set term table as an unmanaged flow table
Termination tables are restricted to have the default miss action and cannot be set to forward to another table in case of a miss. If the fs prio of the termination table is not the last one in the list, fs_core will attempt to attach it to another table. Set the unmanaged ft flag when creating the termination table ft and select the tc offload prio for it to prevent fs_core from selecting the forwarding to next ft miss action and use the default one. In addition, set the flow that forwards to the termination table to ignore ft level restrictions since the ft level is not set by fs_core for unamanged fts. Fixes: 249ccc3 ("net/mlx5e: Add support for offloading traffic from uplink to uplink") Signed-off-by: Ariel Levkovich <lariel@nvidia.com>
1 parent 75e8564 commit 6ff51ab

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c

+5-2
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,11 @@ mlx5_eswitch_termtbl_create(struct mlx5_core_dev *dev,
7676
/* As this is the terminating action then the termination table is the
7777
* same prio as the slow path
7878
*/
79-
ft_attr.flags = MLX5_FLOW_TABLE_TERMINATION |
79+
ft_attr.flags = MLX5_FLOW_TABLE_TERMINATION | MLX5_FLOW_TABLE_UNMANAGED |
8080
MLX5_FLOW_TABLE_TUNNEL_EN_REFORMAT;
81-
ft_attr.prio = FDB_SLOW_PATH;
81+
ft_attr.prio = FDB_TC_OFFLOAD;
8282
ft_attr.max_fte = 1;
83+
ft_attr.level = 1;
8384
ft_attr.autogroup.max_num_groups = 1;
8485
tt->termtbl = mlx5_create_auto_grouped_flow_table(root_ns, &ft_attr);
8586
if (IS_ERR(tt->termtbl)) {
@@ -217,6 +218,7 @@ mlx5_eswitch_termtbl_required(struct mlx5_eswitch *esw,
217218
int i;
218219

219220
if (!MLX5_CAP_ESW_FLOWTABLE_FDB(esw->dev, termination_table) ||
221+
!MLX5_CAP_ESW_FLOWTABLE_FDB(esw->dev, ignore_flow_level) ||
220222
attr->flags & MLX5_ESW_ATTR_FLAG_SLOW_PATH ||
221223
!mlx5_eswitch_offload_is_uplink_port(esw, spec))
222224
return false;
@@ -289,6 +291,7 @@ mlx5_eswitch_add_termtbl_rule(struct mlx5_eswitch *esw,
289291
/* create the FTE */
290292
flow_act->action &= ~MLX5_FLOW_CONTEXT_ACTION_PACKET_REFORMAT;
291293
flow_act->pkt_reformat = NULL;
294+
flow_act->flags |= FLOW_ACT_IGNORE_FLOW_LEVEL;
292295
rule = mlx5_add_flow_rules(fdb, spec, flow_act, dest, num_dest);
293296
if (IS_ERR(rule))
294297
goto revert_changes;

0 commit comments

Comments
 (0)