lkml.org 
[lkml]   [2020]   [Aug]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 076/212] Revert "vxlan: fix tos value before xmit"
    Date
    From: Hangbin Liu <liuhangbin@gmail.com>

    [ Upstream commit a0dced17ad9dc08b1b25e0065b54c97a318e6e8b ]

    This reverts commit 71130f29979c7c7956b040673e6b9d5643003176.

    In commit 71130f29979c ("vxlan: fix tos value before xmit") we want to
    make sure the tos value are filtered by RT_TOS() based on RFC1349.

    0 1 2 3 4 5 6 7
    +-----+-----+-----+-----+-----+-----+-----+-----+
    | PRECEDENCE | TOS | MBZ |
    +-----+-----+-----+-----+-----+-----+-----+-----+

    But RFC1349 has been obsoleted by RFC2474. The new DSCP field defined like

    0 1 2 3 4 5 6 7
    +-----+-----+-----+-----+-----+-----+-----+-----+
    | DS FIELD, DSCP | ECN FIELD |
    +-----+-----+-----+-----+-----+-----+-----+-----+

    So with

    IPTOS_TOS_MASK 0x1E
    RT_TOS(tos) ((tos)&IPTOS_TOS_MASK)

    the first 3 bits DSCP info will get lost.

    To take all the DSCP info in xmit, we should revert the patch and just push
    all tos bits to ip_tunnel_ecn_encap(), which will handling ECN field later.

    Fixes: 71130f29979c ("vxlan: fix tos value before xmit")
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Acked-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/vxlan.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/drivers/net/vxlan.c
    +++ b/drivers/net/vxlan.c
    @@ -2110,7 +2110,7 @@ static void vxlan_xmit_one(struct sk_buf
    else if (info->key.tun_flags & TUNNEL_DONT_FRAGMENT)
    df = htons(IP_DF);

    - tos = ip_tunnel_ecn_encap(RT_TOS(tos), old_iph, skb);
    + tos = ip_tunnel_ecn_encap(tos, old_iph, skb);
    ttl = ttl ? : ip4_dst_hoplimit(&rt->dst);
    err = vxlan_build_skb(skb, &rt->dst, sizeof(struct iphdr),
    vni, md, flags, udp_sum);
    @@ -2169,7 +2169,7 @@ static void vxlan_xmit_one(struct sk_buf
    if (!info)
    udp_sum = !(flags & VXLAN_F_UDP_ZERO_CSUM6_TX);

    - tos = ip_tunnel_ecn_encap(RT_TOS(tos), old_iph, skb);
    + tos = ip_tunnel_ecn_encap(tos, old_iph, skb);
    ttl = ttl ? : ip6_dst_hoplimit(ndst);
    skb_scrub_packet(skb, xnet);
    err = vxlan_build_skb(skb, ndst, sizeof(struct ipv6hdr),

    \
     
     \ /
      Last update: 2020-08-20 12:00    [W:4.058 / U:0.392 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site