ibmveth: fix bad UDP checksums
authorSantiago Leon <santil@us.ibm.com>
Wed, 20 Aug 2008 19:09:19 +0000 (13:09 -0600)
committerJeff Garzik <jgarzik@redhat.com>
Wed, 27 Aug 2008 09:36:57 +0000 (05:36 -0400)
commit45e15bb734e4e559ab32f26196e44d5cf1417f10
treee71322bc295822ad97af55b0298668eab093cfec
parentc213f286f2cf6590f83f541f66a625ee8d20c6f4
ibmveth: fix bad UDP checksums

This patch fixes a ibmveth bug where bad UDP checksums are being transmitted
when checksum offloading is enabled.
The hypervisor does checksum offloading only on TCP packets, so ibmveth calls
skb_checksum_help() for any other protocol.  The bug happens because
the packet is being modified after the DMA map, so we would need a memory
barrier before making the hypervisor call.  Reordering the code so that the
DMA map happens after skb_checksum_help() has the additional advantage of
fixing a DMA map leak if skb_checksum_help() where to fail.

Signed-off-by: Santiago Leon <santil@us.ibm.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/net/ibmveth.c