• Eric Dumazet's avatar
    inet: fix a UFO regression · dcd60771
    Eric Dumazet authored
    While testing virtio_net and skb_segment() changes, Hannes reported
    that UFO was sending wrong frames.
    
    It appears this was introduced by a recent commit :
    8c3a897b ("inet: restore gso for vxlan")
    
    The old condition to perform IP frag was :
    
    tunnel = !!skb->encapsulation;
    ...
            if (!tunnel && proto == IPPROTO_UDP) {
    
    So the new one should be :
    
    udpfrag = !skb->encapsulation && proto == IPPROTO_UDP;
    ...
            if (udpfrag) {
    
    Initialization of udpfrag must be done before call
    to ops->callbacks.gso_segment(skb, features), as
    skb_udp_tunnel_segment() clears skb->encapsulation
    
    (We want udpfrag to be true for UFO, false for VXLAN)
    
    With help from Alexei Starovoitov
    Reported-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Cc: Alexei Starovoitov <ast@plumgrid.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    dcd60771
af_inet.c 43.9 KB