qemu/hw
Brian Kress b83b5f2ef9 vmxnet3: Fix incorrect small packet padding
When running ESXi under qemu there is an issue with the ESXi guest
discarding packets that are too short.  The guest discards any packets
under the normal minimum length for an ethernet packet (60).  This
results in odd behaviour where other hosts or VMs on other hosts can
communicate with the ESXi guest just fine (since there's a physical NIC
somewhere doing padding), but VMs on the host and the host itself cannot
because the ARP request packets are too small for the ESXi host to
accept.

Someone in the past thought this was worth fixing, and added code to the
vmxnet3 qemu emulation such that if it is receiving packets smaller than
60 bytes to pad the packet out to 60. Unfortunately this code is wrong
(or at least in the wrong place). It does so BEFORE before taking into
account the vnet_hdr at the front of the packet added by the tap device.
As a result, it might add padding, but it never adds enough.
Specifically it adds 10 less (the length of the vnet_hdr) than it needs
to.

The following (hopefully "obviously correct") patch simply swaps the
order of processing the vnet header and the padding.  With this patch an
ESXi guest is able to communicate with the host or other local VMs.

Signed-off-by: Brian Kress <kressb@moose.net>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Dmitry Fleytman <dmitry@daynix.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2015-07-07 13:10:26 +01:00
..
9pfs qerror: Move #include out of qerror.h 2015-06-22 18:20:40 +02:00
acpi ich9: add smm_enabled field and arguments 2015-07-06 17:59:44 +02:00
alpha hw/alpha/typhoon.c: Fix misusing qemu_allocate_irqs for single irq 2015-06-03 14:21:24 +03:00
arm hw/arm/virt: Make block devices default to virtio 2015-06-26 14:22:37 +01:00
audio gus: clean up MemoryRegionPortio 2015-04-27 18:24:18 +02:00
block virito-blk: drop duplicate check 2015-06-24 16:16:04 +01:00
bt bt-sdp: fix broken uuids power-of-2 calculation 2015-04-28 15:36:08 +02:00
char Include qapi/qmp/qerror.h exactly where needed 2015-06-22 18:20:41 +02:00
core virtio, pci fixes, enhancements 2015-06-26 15:57:43 +01:00
cpu
cris cris: memory: Replace memory_region_init_ram with memory_region_allocate_system_memory 2015-04-11 20:03:57 +10:00
display hw/display/tcx.c: Fix memory leak 2015-06-23 20:23:39 +03:00
dma Include qapi/qmp/qerror.h exactly where needed 2015-06-22 18:20:41 +02:00
gpio pl061: fix wrong calculation of GPIOMIS register 2015-06-02 14:56:25 +01:00
i2c ACPI: split CONFIG_ACPI into 4 pieces 2015-05-29 11:28:59 +01:00
i386 pc: add SMM property 2015-07-06 18:39:59 +02:00
ide ahci: fix sdb fis semantics 2015-07-04 02:06:05 -04:00
input virtio-input: add input routing support 2015-07-03 12:21:11 +02:00
intc hw/intc/arm_gic_common.c: Reset all registers 2015-07-06 10:13:17 +01:00
ipack pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
isa ich9: add smm_enabled field and arguments 2015-07-06 17:59:44 +02:00
lm32 hw/lm32/milkymist.c: Fix misusing qemu_allocate_irqs for single irq 2015-06-03 14:21:24 +03:00
m68k m68k: implement more ColdFire 5208 interrupt controller functionality 2015-06-22 14:43:25 +01:00
mem numa,pc-dimm: Store pc-dimm memory information in numa_info 2015-07-03 17:47:58 -03:00
microblaze s3adsp1800: Remove the hardcoded values from the reset 2015-06-21 17:20:16 +10:00
mips target-mips: add Unified Hosting Interface (UHI) support 2015-06-26 09:08:50 +01:00
misc Include qapi/qmp/qerror.h exactly where needed 2015-06-22 18:20:41 +02:00
moxie
net vmxnet3: Fix incorrect small packet padding 2015-07-07 13:10:26 +01:00
nvram fw_cfg: prohibit insertion of duplicate fw_cfg file names 2015-06-10 08:00:37 +02:00
openrisc
pci Print error when failing to load PCI config data 2015-06-23 19:57:27 +03:00
pci-bridge hw/pci-bridge: format special OFW unit address for PXB host 2015-06-23 22:58:36 +02:00
pci-host piix: piix3 QOMify 2015-06-23 19:57:28 +03:00
pcmcia
ppc timer: Use a single definition of NSEC_PER_SEC for the whole codebase 2015-07-02 09:20:18 +01:00
s390x s390x/migration: Introduce 2.4 machine 2015-07-02 15:35:34 +02:00
scsi qerror: Move #include out of qerror.h 2015-06-22 18:20:40 +02:00
sd hw/sd/pxa2xx_mmci: Stop using old_mmio in MemoryRegionOps 2015-06-15 18:06:09 +01:00
sh4 sh4/r2d: convert to new MMIO accessor style 2015-06-12 12:02:48 +02:00
sparc fw_cfg: fix FW_CFG_BOOT_DEVICE update on ppc and sparc 2015-06-10 08:00:37 +02:00
sparc64 fw_cfg: fix FW_CFG_BOOT_DEVICE update on ppc and sparc 2015-06-10 08:00:37 +02:00
ssi omap: Fix warnings from Sparse 2015-03-19 11:11:55 +03:00
timer arm_mptimer: Respect IT bit state 2015-07-06 10:26:35 +01:00
tpm qerror: Move #include out of qerror.h 2015-06-22 18:20:40 +02:00
tricore
unicore32 hw/unicore32/puv3.c: Fix misusing qemu_allocate_irqs for single irq 2015-06-03 14:21:24 +03:00
usb timer: Use a single definition of NSEC_PER_SEC for the whole codebase 2015-07-02 09:20:18 +01:00
vfio vfio: fix build error on CentOS 5.7 2015-06-18 10:35:59 +01:00
virtio virtio, pci fixes, enhancements 2015-06-26 15:57:43 +01:00
watchdog wdt_i6300esb: QOMify 2015-06-23 19:57:28 +03:00
xen trivial patches for 2015-06-23 2015-06-23 18:25:55 +01:00
xenpv
xtensa xtensa: Remove superfluous '\n' around error_report() 2015-03-10 08:15:33 +03:00
Makefile.objs