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 e1d3dc31311ab65bcecbbbe889600d2e51ad11c4..1e275a8441ded41eb246fc2eaac9d782263e2c29 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;