net/mlx5e: Enable setting multiple match criteria for flow group
When filling in flow spec match criteria, to allow previous modifications of the match criteria, use "|=" rather than "=". Tunnel options are parsed before the match criteria of the offloaded flow are being set. If the the flow that we're about to offload has encapsulation options, the flow group might need to match on additional criteria. For Geneve, an additional flow group matching parameter should be used - misc3. The appropriate bit in the match criteria is set while parsing the tunnel options, so the criteria value shouldn't be overwritten. This is a pre-step for supporting Geneve TLV options offload. Reviewed-by: Oz Shlomo <ozsh@mellanox.com> Signed-off-by: Yevgeny Kliteynik <kliteyn@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
parent
d1bda7eecd
commit
d4a18e16c5
@ -799,7 +799,7 @@ mlx5e_tc_add_nic_flow(struct mlx5e_priv *priv,
|
||||
}
|
||||
|
||||
if (attr->match_level != MLX5_MATCH_NONE)
|
||||
parse_attr->spec.match_criteria_enable = MLX5_MATCH_OUTER_HEADERS;
|
||||
parse_attr->spec.match_criteria_enable |= MLX5_MATCH_OUTER_HEADERS;
|
||||
|
||||
flow->rule[0] = mlx5_add_flow_rules(priv->fs.tc.t, &parse_attr->spec,
|
||||
&flow_act, dest, dest_ix);
|
||||
|
@ -173,7 +173,7 @@ mlx5_eswitch_add_offloaded_rule(struct mlx5_eswitch *esw,
|
||||
MLX5_SET_TO_ONES(fte_match_set_misc, misc,
|
||||
source_eswitch_owner_vhca_id);
|
||||
|
||||
spec->match_criteria_enable = MLX5_MATCH_MISC_PARAMETERS;
|
||||
spec->match_criteria_enable |= MLX5_MATCH_MISC_PARAMETERS;
|
||||
if (flow_act.action & MLX5_FLOW_CONTEXT_ACTION_DECAP) {
|
||||
if (attr->tunnel_match_level != MLX5_MATCH_NONE)
|
||||
spec->match_criteria_enable |= MLX5_MATCH_OUTER_HEADERS;
|
||||
@ -266,10 +266,10 @@ mlx5_eswitch_add_fwd_rule(struct mlx5_eswitch *esw,
|
||||
source_eswitch_owner_vhca_id);
|
||||
|
||||
if (attr->match_level == MLX5_MATCH_NONE)
|
||||
spec->match_criteria_enable = MLX5_MATCH_MISC_PARAMETERS;
|
||||
spec->match_criteria_enable |= MLX5_MATCH_MISC_PARAMETERS;
|
||||
else
|
||||
spec->match_criteria_enable = MLX5_MATCH_OUTER_HEADERS |
|
||||
MLX5_MATCH_MISC_PARAMETERS;
|
||||
spec->match_criteria_enable |= MLX5_MATCH_OUTER_HEADERS |
|
||||
MLX5_MATCH_MISC_PARAMETERS;
|
||||
|
||||
rule = mlx5_add_flow_rules(fast_fdb, spec, &flow_act, dest, i);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user