net/mlx5: E-Switch, Skip restore modify header between prios of same chain
authorPaul Blakey <paulb@mellanox.com>
Mon, 16 Mar 2020 12:55:11 +0000 (14:55 +0200)
committerSaeed Mahameed <saeedm@mellanox.com>
Wed, 18 Mar 2020 02:41:17 +0000 (19:41 -0700)
Restore modify header writes the chain mapping on the packet.
This modify header and action is added on all prios connections,
and gets overwritten with the same value consecutively in prios
of the same chain.

Use the chain's modify header only for the last prio of a given tc
chain.

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

index e1d3dc3..1e275a8 100644 (file)
@@ -422,7 +422,7 @@ mlx5_esw_chains_add_miss_rule(struct fdb_chain *fdb_chain,
        dest.type  = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE;
        dest.ft = next_fdb;
 
-       if (fdb_chain->chain != mlx5_esw_chains_get_ft_chain(esw) &&
+       if (next_fdb == tc_end_fdb(esw) &&
            fdb_modify_header_fwd_to_table_supported(esw)) {
                act.modify_hdr = fdb_chain->miss_modify_hdr;
                act.action |= MLX5_FLOW_CONTEXT_ACTION_MOD_HDR;