aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Blakey <paulb@mellanox.com>2017-08-22 13:51:56 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-09-20 08:22:08 +0200
commitb0034cb5014e7c7d64389c52ee58180101c8ac29 (patch)
tree074bfe1ea511414302bde5b5b87538430651ff40
parentnet/mlx5e: Don't override user RSS upon set channels (diff)
downloadlinux-stable-b0034cb5014e7c7d64389c52ee58180101c8ac29.tar.xz
linux-stable-b0034cb5014e7c7d64389c52ee58180101c8ac29.zip
net/mlx5e: Properly resolve TC offloaded ipv6 vxlan tunnel source address
[ Upstream commit 08820528c9d3ff0d0eda047d7ef5ecac2da1ef6c ] Currently if vxlan tunnel ipv6 src isn't supplied the driver fails to resolve it as part of the route lookup. The resulting encap header is left with a zeroed out ipv6 src address so the packets are sent with this src ip. Use an appropriate route lookup API that also resolves the source ipv6 address if it's not supplied. Fixes: ce99f6b97fcd ('net/mlx5e: Support SRIOV TC encapsulation offloads for IPv6 tunnels') Signed-off-by: Paul Blakey <paulb@mellanox.com> Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com> Reviewed-by: Roi Dayan <roid@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_tc.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
index 9df9fc0d26f5..558a8841c9a5 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
@@ -1262,12 +1262,10 @@ static int mlx5e_route_lookup_ipv6(struct mlx5e_priv *priv,
struct mlx5_eswitch *esw = priv->mdev->priv.eswitch;
int ret;
- dst = ip6_route_output(dev_net(mirred_dev), NULL, fl6);
- ret = dst->error;
- if (ret) {
- dst_release(dst);
+ ret = ipv6_stub->ipv6_dst_lookup(dev_net(mirred_dev), NULL, &dst,
+ fl6);
+ if (ret < 0)
return ret;
- }
*out_ttl = ip6_dst_hoplimit(dst);