]> git.ipfire.org Git - thirdparty/qemu.git/commit - hw/net/virtio-net.c
virtio-net: byteswap virtio-net header
authorCédric Le Goater <clg@fr.ibm.com>
Tue, 24 Jun 2014 17:11:32 +0000 (19:11 +0200)
committerMichael S. Tsirkin <mst@redhat.com>
Sun, 29 Jun 2014 16:39:41 +0000 (19:39 +0300)
commit032a74a1c0fcdd5fd1c69e56126b4c857ee36611
tree0a07110ca6192858747c5cf6adc8affab982be65
parenta628fc8dae4c4a9a70f020ab65018a6e085a2088
virtio-net: byteswap virtio-net header

TCP connectivity fails when the guest has a different endianness.
The packets are silently dropped on the host by the tap backend
when they are read from user space because the endianness of the
virtio-net header is in the wrong order. These lines may appear
in the guest console:

[  454.709327] skbuff: bad partial csum: csum=8704/4096 len=74
[  455.702554] skbuff: bad partial csum: csum=8704/4096 len=74

The issue that got first spotted with a ppc64le PowerKVM guest,
but it also exists for the less common case of a x86_64 guest run
by a big-endian ppc64 TCG hypervisor.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
[ Ported from PowerKVM,
  Greg Kurz <gkurz@linux.vnet.ibm.com> ]
Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/net/virtio-net.c