diff options
author | Wei-Chun Chao <weichunc@plumgrid.com> | 2013-12-26 22:10:22 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-01-03 01:06:47 +0100 |
commit | 7a7ffbabf99445704be01bff5d7e360da908cf8e (patch) | |
tree | 3b4f71699307ac2853a8fdffde60fb7055cb1b04 /drivers/net | |
parent | sctp: Remove outqueue empty state (diff) | |
download | linux-7a7ffbabf99445704be01bff5d7e360da908cf8e.tar.xz linux-7a7ffbabf99445704be01bff5d7e360da908cf8e.zip |
ipv4: fix tunneled VM traffic over hw VXLAN/GRE GSO NIC
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: Wei-Chun Chao <weichunc@plumgrid.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
0 files changed, 0 insertions, 0 deletions