• Wei-Chun Chao's avatar
    ipv4: fix tunneled VM traffic over hw VXLAN/GRE GSO NIC · 7a7ffbab
    Wei-Chun Chao authored
    VM to VM GSO traffic is broken if it goes through VXLAN or GRE
    tunnel and the physical NIC on the host supports hardware VXLAN/GRE
    GSO offload (e.g. bnx2x and next-gen mlx4).
    
    Two issues -
    (VXLAN) VM traffic has SKB_GSO_DODGY and SKB_GSO_UDP_TUNNEL with
    SKB_GSO_TCP/UDP set depending on the inner protocol. GSO header
    integrity check fails in udp4_ufo_fragment if inner protocol is
    TCP. Also gso_segs is calculated incorrectly using skb->len that
    includes tunnel header. Fix: robust check should only be applied
    to the inner packet.
    
    (VXLAN & GRE) Once GSO header integrity check passes, NULL segs
    is returned and the original skb is sent to hardware. However the
    tunnel header is already pulled. Fix: tunnel header needs to be
    restored so that hardware can perform GSO properly on the original
    packet.
    Signed-off-by: default avatarWei-Chun Chao <weichunc@plumgrid.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7a7ffbab
udp.c 64.6 KB