--- zzzz-none-000/linux-3.10.107/net/ipv6/sit.c 2017-06-27 09:49:32.000000000 +0000 +++ vr9-7490-729/linux-3.10.107/net/ipv6/sit.c 2021-11-10 11:53:56.000000000 +0000 @@ -17,6 +17,12 @@ * Fred Templin : isatap support */ +/** + * Some part of this file is modified by Ikanos Communications. + * + * Copyright (C) 2013-2014 Ikanos Communications. + */ + #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #include @@ -740,7 +746,15 @@ struct ip_tunnel *tunnel = netdev_priv(dev); const struct iphdr *tiph = &tunnel->parms.iph; const struct ipv6hdr *iph6 = ipv6_hdr(skb); + // Instead of using the user supplied TOS value copy it from the inner IP header + // This has been done because the TOS value carried in the inner and outer IP + // header should be same. +#if defined(CONFIG_FUSIV_VX185) || defined(CONFIG_FUSIV_VX585) + u8 tos = ipv6_get_dsfield(iph6); +#else u8 tos = tunnel->parms.iph.tos; +#endif + __be16 df = tiph->frag_off; struct rtable *rt; /* Route to the other host */ struct net_device *tdev; /* Device to other host */