Commit 1313d78a authored by Maor Dickman's avatar Maor Dickman Committed by Saeed Mahameed

net/mlx5: E-switch, Fix wrong usage of source port rewrite in split rules

In few cases, rules with mirror use case are split to two FTEs, one which
do the mirror action and forward to second FTE which do the rest of the rule
actions and the second redirect action.
In case of mirror rules which do split and forward to ovs internal port or
VF stack devices, source port rewrite should be used in the second FTE but
it is wrongly also set in the first FTE which break the offload.

Fix this issue by removing the wrong check if source port rewrite is needed to
be used on the first FTE of the split and instead return EOPNOTSUPP which will
block offload of rules which mirror to ovs internal port or VF stack devices
which isn't supported.

Fixes: 10742efc ("net/mlx5e: VF tunnel TX traffic offloading")
Fixes: a508728a ("net/mlx5e: VF tunnel RX traffic offloading")
Signed-off-by: default avatarMaor Dickman <maord@nvidia.com>
Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
parent 7ba930fc
...@@ -723,11 +723,11 @@ mlx5_eswitch_add_fwd_rule(struct mlx5_eswitch *esw, ...@@ -723,11 +723,11 @@ mlx5_eswitch_add_fwd_rule(struct mlx5_eswitch *esw,
flow_act.action = MLX5_FLOW_CONTEXT_ACTION_FWD_DEST; flow_act.action = MLX5_FLOW_CONTEXT_ACTION_FWD_DEST;
for (i = 0; i < esw_attr->split_count; i++) { for (i = 0; i < esw_attr->split_count; i++) {
if (esw_is_indir_table(esw, attr)) if (esw_attr->dests[i].flags & MLX5_ESW_DEST_CHAIN_WITH_SRC_PORT_CHANGE)
err = esw_setup_indir_table(dest, &flow_act, esw, attr, false, &i); /* Source port rewrite (forward to ovs internal port or statck device) isn't
else if (esw_is_chain_src_port_rewrite(esw, esw_attr)) * supported in the rule of split action.
err = esw_setup_chain_src_port_rewrite(dest, &flow_act, esw, chains, attr, */
&i); err = -EOPNOTSUPP;
else else
esw_setup_vport_dest(dest, &flow_act, esw, esw_attr, i, i, false); esw_setup_vport_dest(dest, &flow_act, esw, esw_attr, i, i, false);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment