datapath: Further mirror checksum offloading state on old kernels.
authorJesse Gross <jesse@nicira.com>
Fri, 27 May 2011 22:53:49 +0000 (15:53 -0700)
committerJesse Gross <jesse@nicira.com>
Thu, 16 Jun 2011 21:48:12 +0000 (14:48 -0700)
commitc3729ee42dc25a8240cee6c0041b7db3e4070414
tree2f65993edb1c3e1aa06b5468d3565ab168592f24
parente6269c12f294f71c9e6a31c153a12cf26124c235
datapath: Further mirror checksum offloading state on old kernels.

Older kernels (those before 2.6.22) rely on implicit assumptions
to determine checksum offloading status.  These assumptions tend
to break down when doing switching because it sits in the middle
of the transmit and receive path.  Newer kernels deal with this
problem by adding more explicit information about how to checksum.
This replicates that behavior by mirroring the state from newer
kernels in private OVS storage on the kernels that lack it.  On
ingress and egress we then map that state onto the appropriate
location for the given kernel and can consistently manipulate it
within OVS.  Some of this was already done for the checksum type
but this makes it more robust and expands it to the checksum start
and offset as well.

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