linux/drivers/net
Wei Liu d554f73df6 xen-netfront: reset skb network header before checksum
In ed1f50c3a ("net: add skb_checksum_setup") we introduced some checksum
functions in core driver. Subsequent change b5cf66cd1 ("xen-netfront:
use new skb_checksum_setup function") made use of those functions to
replace its own implementation.

However with that change netfront is broken. It sees a lot of checksum
error. That's because its own implementation of checksum function was a
bit hacky (dereferencing skb->data directly) while the new function was
implemented using ip_hdr(). The network header is not reset before skb
is passed to the new function. When the new function tries to do its
job, it's confused and reports error.

The fix is simple, we need to reset network header before passing skb to
checksum function. Netback is not affected as it already does the right
thing.

Reported-by: Sander Eikelenboom <linux@eikelenboom.it>
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Paul Durrant <paul.durrant@citrix.com>
Tested-By: Sander Eikelenboom <linux@eikelenboom.it>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-02-19 16:52:51 -05:00
..
appletalk
arcnet drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
bonding bonding: 802.3ad: make aggregator_identifier bond-private 2014-02-17 14:54:06 -05:00
caif drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
can can: kvaser_usb: check number of channels returned by HW 2014-02-12 10:42:02 +01:00
cris
dsa
ethernet Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-02-18 15:52:43 -08:00
fddi drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
hamradio
hippi drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
hyperv hyperv: Fix the carrier status setting 2014-02-16 23:45:00 -05:00
ieee802154
irda irtty-sir.c: Do not set_termios() on irtty_close() 2014-02-17 16:27:51 -05:00
phy net:phy:dp83640: Move all HW initialization to dp83640_config_init 2014-02-13 18:52:22 -05:00
plip
ppp
slip
team netdevice: add queue selection fallback handler for ndo_select_queue 2014-02-17 00:36:34 -05:00
usb usbnet: remove generic hard_header_len check 2014-02-17 14:35:46 -05:00
vmxnet3 drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
wan wan: dlci: Remove unused netdev_priv pointer 2014-02-09 18:40:56 -08:00
wimax
wireless Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem 2014-02-17 15:54:31 -05:00
xen-netback xen-netback: Fix Rx stall due to race condition 2014-02-05 16:24:08 -08:00
dummy.c
eql.c eql: use __dev_get_by_name instead of dev_get_by_name to find interface 2014-01-14 18:50:46 -08:00
ifb.c
Kconfig net: fix macvtap type name in Kconfig 2014-02-13 15:48:31 -05:00
LICENSE.SRC
loopback.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
macvlan.c macvlan: unregister net device when netdev_upper_dev_link() fails 2014-02-13 17:08:28 -05:00
macvtap.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
Makefile
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tun.c netdevice: add queue selection fallback handler for ndo_select_queue 2014-02-17 00:36:34 -05:00
veth.c
virtio_net.c virtio-net: initial rx sysfs support, export mergeable rx buffer size 2014-01-16 23:46:07 -08:00
vxlan.c vxlan: remove extra newline after function definition 2014-02-01 16:58:02 -08:00
xen-netfront.c xen-netfront: reset skb network header before checksum 2014-02-19 16:52:51 -05:00