datapath: Move LRO check from transmit to receive.
authorJesse Gross <jesse@nicira.com>
Mon, 21 Jan 2013 13:13:32 +0000 (05:13 -0800)
committerJesse Gross <jesse@nicira.com>
Mon, 21 Jan 2013 14:06:55 +0000 (06:06 -0800)
commit33e031e99cc630baf1b0cb9256710dee7d9ab66d
tree8cd14768269cd242766722b41d1c7fffbe9591a6
parent00c7faf3e5b7d4020e995a1429cf94313f197171
datapath: Move LRO check from transmit to receive.

Commit 24b019f808211a95078efd916064af0975ca5733 (datapath: Disable
LRO from userspace instead of the kernel.) accidentally moved the
check for LRO packets from the receive path to transmit.  Since
this check is supposed to protect OVS (and other parts of the system)
from packets that it cannot handle it is obviously not useful on
egress.  Therefore, this commit moves it back to the receive side.

The primary problem that this caused is upcalls to userspace tried
to segment the packet even though no segmentation information is
available.  This would later cause NULL pointer dereferences when
skb_gso_segment() did nothing.

Bug #14772

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
datapath/vport-netdev.c