net/mlx5e: Remove workaround to avoid syndrome for internal port
[ Upstream commit5085f861b4] 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:06b4eac9c4("net/mlx5e: Don't offload internal port if filter device is out device") Signed-off-by: Jianbo Liu <jianbol@nvidia.com> Tested-by: Frode Nordahl <frode.nordahl@canonical.com> Reviewed-by: Chris Mi <cmi@nvidia.com> Reviewed-by: Ariel Levkovich <lariel@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Link: https://patch.msgid.link/20241203204920.232744-7-tariqt@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
97ce3a4ec5
commit
4bd8ced2b9
@@ -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"
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user