datapath: Handle packets with precomputed checksums.
authorJesse Gross <jesse@nicira.com>
Fri, 22 Jan 2010 22:26:31 +0000 (17:26 -0500)
committerJesse Gross <jesse@nicira.com>
Tue, 26 Jan 2010 22:17:21 +0000 (17:17 -0500)
commita6057323869de5b323d1c75e678b6a0fe0e8addd
tree59bf61b595c17efd3801082cf13638ae41d2b2cd
parent734500471524159650e7ded2ebff2536391ffd53
datapath: Handle packets with precomputed checksums.

On older kernels (< 2.6.19) CHECKSUM_HW can mean either that the
checksum has already been computed by hardware or that the checksum
needs to be computed by hardware, depending on whether we are on
the transmit or receive path.  Unfortunately since we are in the
middle of these two paths it is impossible to tell which is the
case.  Code after us assumes that CHECKSUM_HW means that the
checksum needs to be computed and will panic if there already is
a checksum.  On these kernels we mark these packets as CHECKSUM_NONE
before handing them off.

Without this change using certain NICs will cause panics.
datapath/actions.c
datapath/datapath.c
datapath/datapath.h
datapath/linux-2.6/compat-2.6/ip_gre.c