Skip to content

Commit

Permalink
net/mlx5e: Remove workaround to avoid syndrome for internal port
Browse files Browse the repository at this point in the history
Previously a workaround was added to avoid syndrome 0xcdb051. It is
triggered when offload a rule with tunnel encapsulation, and
forwarding to another table, but not matching on the internal port in
firmware steering mode. The original workaround skips internal tunnel
port logic, which is not correct as not all cases are considered. As
an example, if vlan is configured on the uplink port, traffic can't
pass because vlan header is not added with this workaround. Besides,
there is no such issue for software steering. So, this patch removes
that, and returns error directly if trying to offload such rule for
firmware steering.

Fixes: 06b4eac ("net/mlx5e: Don't offload internal port if filter device is out device")
Signed-off-by: Jianbo Liu <[email protected]>
Tested-by: Frode Nordahl <[email protected]>
Reviewed-by: Chris Mi <[email protected]>
Reviewed-by: Ariel Levkovich <[email protected]>
Signed-off-by: Tariq Toukan <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
  • Loading branch information
Jianbo Liu authored and kuba-moo committed Dec 5, 2024
1 parent 31f114c commit 5085f86
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include <net/nexthop.h>
#include <net/ip_tunnels.h>
#include "tc_tun_encap.h"
#include "fs_core.h"
#include "en_tc.h"
#include "tc_tun.h"
#include "rep/tc.h"
Expand All @@ -24,10 +25,18 @@ static int mlx5e_set_int_port_tunnel(struct mlx5e_priv *priv,

route_dev = dev_get_by_index(dev_net(e->out_dev), e->route_dev_ifindex);

if (!route_dev || !netif_is_ovs_master(route_dev) ||
attr->parse_attr->filter_dev == e->out_dev)
if (!route_dev || !netif_is_ovs_master(route_dev))
goto out;

if (priv->mdev->priv.steering->mode == MLX5_FLOW_STEERING_MODE_DMFS &&
mlx5e_eswitch_uplink_rep(attr->parse_attr->filter_dev) &&
(attr->esw_attr->dests[out_index].flags & MLX5_ESW_DEST_ENCAP)) {
mlx5_core_warn(priv->mdev,
"Matching on external port with encap + fwd to table actions is not allowed for firmware steering\n");
err = -EINVAL;
goto out;
}

err = mlx5e_set_fwd_to_int_port_actions(priv, attr, e->route_dev_ifindex,
MLX5E_TC_INT_PORT_EGRESS,
&attr->action, out_index);
Expand Down

0 comments on commit 5085f86

Please sign in to comment.