datapath: Call vswitch_skb_checksum_setup() before doing GSO.
authorJesse Gross <jesse@nicira.com>
Thu, 17 Jun 2010 22:15:11 +0000 (15:15 -0700)
committerJesse Gross <jesse@nicira.com>
Fri, 18 Jun 2010 18:38:10 +0000 (11:38 -0700)
commita2377e444a0e0a3f3c6db2502c63cc9545572281
treed9d8b5b891120315faef005eb411428f337546eb
parentdb9220c38ee6fd3ff264807e4c32065e5de5140f
datapath: Call vswitch_skb_checksum_setup() before doing GSO.

Since GSO computes checksums as it does segmentation, we need to
setup the checksum pointers before calling skb_gso_segment().  Failing
to do so can potentially result in warnings, incorrect checksums,
crashes, or redundant checksum computation.  In general we don't
hit this case because the code path is run during the first packet
in a flow, which is generally not a large GSO packet.

This was found during the investigation of NIC-121 but has no impact
on it because vswitch_skb_checksum_setup() is a no-op on 2.6.27-based
XenServer kernels.
datapath/datapath.c