qemu/include
Greg Kurz 1bfa316ce7 virtio-net: use the backend cross-endian capabilities
When running a fully emulated device in cross-endian conditions, including
a virtio 1.0 device offered to a big endian guest, we need to fix the vnet
headers. This is currently handled by the virtio_net_hdr_swap() function
in the core virtio-net code but it should actually be handled by the net
backend.

With this patch, virtio-net now tries to configure the backend to do the
endian fixing when the device starts (i.e. drivers sets the CONFIG_OK bit).
If the backend cannot support the requested endiannes, we have to fallback
onto virtio_net_hdr_swap(): this is recorded in the needs_vnet_hdr_swap flag,
to be used in the TX and RX paths.

Note that we reset the backend to the default behaviour (guest native
endianness) when the device stops (i.e. device status had CONFIG_OK bit and
driver unsets it). This is needed, with the linux tap backend at least,
otherwise the guest may lose network connectivity if rebooted into a
different endianness.

The current vhost-net code also tries to configure net backends. This will
be no more needed and will be reverted in a subsequent patch.

Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Reviewed-by: Laurent Vivier <lvivier@redhat.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>
Reviewed-by: Laurent Vivier <lvivier@redhat.com>
2016-02-16 12:05:17 +02:00
..
block blockjob: Fix hang in block_job_finish_sync 2016-02-09 13:52:26 +00:00
crypto crypto: fix description of @errp parameter initialization 2016-02-01 14:11:35 +00:00
disas disas: Add print_insn to disassemble info 2015-07-09 15:20:40 +02:00
exec memory: fix usage of find_next_bit and find_next_zero_bit 2016-02-10 22:38:24 +00:00
fpu fpu: Replace uint8 typedef with uint8_t 2016-01-22 15:09:21 +00:00
hw virtio-net: use the backend cross-endian capabilities 2016-02-16 12:05:17 +02:00
io io: fix description of @errp parameter initialization 2016-01-20 11:31:01 +00:00
libdecnumber Fix new typos in comments (found by codespell) 2014-07-18 17:45:36 +04:00
migration pc and misc cleanups and fixes, virtio optimizations 2016-02-08 11:25:31 +00:00
monitor monitor/target-ppc: Define target_get_monitor_def 2015-11-12 14:53:36 +11:00
net net/filter: Fix the output information for command 'info network' 2016-02-04 14:13:11 +08:00
qapi Error reporting patches for 2016-02-09 2016-02-09 16:09:15 +00:00
qemu * switch to C11 atomics (Alex) 2016-02-09 19:34:46 +00:00
qom trivial patches for 2016-02-11 2016-02-11 15:09:33 +00:00
standard-headers linux-headers: update from kvm/next 2015-12-17 15:24:34 +01:00
sysemu w32: include winsock2.h before windows.h 2016-02-11 15:15:47 +03:00
ui virtio-gpu: bugfixes and spice support preparation 2016-02-03 12:23:48 +00:00
config.h janitor: move remaining public headers to include/ 2012-12-19 08:32:46 +01:00
elf.h elf: add arm note types 2016-01-15 14:55:16 +00:00
glib-compat.h glib: add compatibility interface for g_hash_table_add() 2015-10-30 09:01:03 +01:00
qemu-common.h cpu: cpu_save/cpu_load is no more 2016-02-11 15:15:46 +03:00
qemu-io.h qemu-io: Use BlockBackend 2015-02-16 15:07:19 +00:00
qjson.h QJSON: Add JSON writer 2015-02-05 17:16:14 +01:00
trace-tcg.h trace: [tcg] Generate TCG tracing routines 2014-08-12 14:26:12 +01:00
trace.h trace: [tcg] Include event definitions in "trace.h" 2014-08-12 14:26:12 +01:00