mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-20 11:13:58 +08:00
net/mlx5e: Use hint to resolve route when in HW multipath mode
As part of creating the tunnel headers while offloading TC encap rules, we resolve the route and neighbour in order to get the source / destination mac. Since the way we offload multipath route is by having two HW rules, one per uplink port, doing naive route lookup might get us a "wrong" routing path which goes through the peer uplink and this will get us eventually to create a wrong L2 header for the tunnel. To avoid that, we use a device hint to get the correct route. Signed-off-by: Roi Dayan <roid@mellanox.com> Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
parent
316d5f72b4
commit
5fb091e813
@ -54,12 +54,24 @@ static int mlx5e_route_lookup_ipv4(struct mlx5e_priv *priv,
|
||||
struct neighbour *n = NULL;
|
||||
|
||||
#if IS_ENABLED(CONFIG_INET)
|
||||
struct mlx5_core_dev *mdev = priv->mdev;
|
||||
struct net_device *uplink_dev;
|
||||
int ret;
|
||||
|
||||
if (mlx5_lag_is_multipath(mdev)) {
|
||||
struct mlx5_eswitch *esw = mdev->priv.eswitch;
|
||||
|
||||
uplink_dev = mlx5_eswitch_uplink_get_proto_dev(esw, REP_ETH);
|
||||
fl4->flowi4_oif = uplink_dev->ifindex;
|
||||
}
|
||||
|
||||
rt = ip_route_output_key(dev_net(mirred_dev), fl4);
|
||||
ret = PTR_ERR_OR_ZERO(rt);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (mlx5_lag_is_multipath(mdev) && !rt->rt_gateway)
|
||||
return -ENETUNREACH;
|
||||
#else
|
||||
return -EOPNOTSUPP;
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user