mirror of https://github.com/xemu-project/xemu.git
net: don't set native endianness
commit 5be7d9f1b1
vhost-net: tell tap backend about the vnet endianness
makes vhost net always try to set LE - even if that matches the
native endian-ness.
This makes it fail on older kernels on x86 without TUNSETVNETLE support.
To fix, make qemu_set_vnet_le/qemu_set_vnet_be skip the
ioctl if it matches the host endian-ness.
Reported-by: Marcel Apfelbaum <marcel@redhat.com>
Cc: Greg Kurz <gkurz@linux.vnet.ibm.com>
Cc: qemu-stable@nongnu.org
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
This commit is contained in:
parent
794e8f301a
commit
052bd52fa9
|
@ -524,20 +524,28 @@ void qemu_set_vnet_hdr_len(NetClientState *nc, int len)
|
||||||
|
|
||||||
int qemu_set_vnet_le(NetClientState *nc, bool is_le)
|
int qemu_set_vnet_le(NetClientState *nc, bool is_le)
|
||||||
{
|
{
|
||||||
|
#ifdef HOST_WORDS_BIGENDIAN
|
||||||
if (!nc || !nc->info->set_vnet_le) {
|
if (!nc || !nc->info->set_vnet_le) {
|
||||||
return -ENOSYS;
|
return -ENOSYS;
|
||||||
}
|
}
|
||||||
|
|
||||||
return nc->info->set_vnet_le(nc, is_le);
|
return nc->info->set_vnet_le(nc, is_le);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int qemu_set_vnet_be(NetClientState *nc, bool is_be)
|
int qemu_set_vnet_be(NetClientState *nc, bool is_be)
|
||||||
{
|
{
|
||||||
|
#ifdef HOST_WORDS_BIGENDIAN
|
||||||
|
return 0;
|
||||||
|
#else
|
||||||
if (!nc || !nc->info->set_vnet_be) {
|
if (!nc || !nc->info->set_vnet_be) {
|
||||||
return -ENOSYS;
|
return -ENOSYS;
|
||||||
}
|
}
|
||||||
|
|
||||||
return nc->info->set_vnet_be(nc, is_be);
|
return nc->info->set_vnet_be(nc, is_be);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int qemu_can_send_packet(NetClientState *sender)
|
int qemu_can_send_packet(NetClientState *sender)
|
||||||
|
|
Loading…
Reference in New Issue