qemu-e2k/hw
Stefan Hajnoczi 00b7ade807 rtl8139: flush queued packets when RxBufPtr is written
Net queues support efficient "receive disable".  For example, tap's file
descriptor will not be polled while its peer has receive disabled.  This
saves CPU cycles for needlessly copying and then dropping packets which
the peer cannot receive.

rtl8139 is missing the qemu_flush_queued_packets() call that wakes the
queue up when receive becomes possible again.

As a result, the Windows 7 guest driver reaches a state where the
rtl8139 cannot receive packets.  The driver has actually refilled the
receive buffer but we never resume reception.

The bug can be reproduced by running a large FTP 'get' inside a Windows
7 guest:

  $ qemu -netdev tap,id=tap0,...
         -device rtl8139,netdev=tap0

The Linux guest driver does not trigger the bug, probably due to a
different buffer management strategy.

Reported-by: Oliver Francke <oliver.francke@filoo.de>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2013-05-24 16:34:13 +02:00
..
9pfs remove double semicolons 2013-05-12 13:25:55 +04:00
acpi acpi: add dummy write function for acpi timer 2013-05-14 08:53:09 -05:00
alpha include: avoid useless includes of exec/ headers 2013-04-15 18:19:26 +02:00
arm remove some double-includes 2013-05-18 16:35:12 +04:00
audio remove some double-includes 2013-05-18 16:35:12 +04:00
block Revert "pc: Kill the "use flash device for BIOS unless KVM" misfeature" 2013-05-13 09:52:43 -05:00
bt sysemu: avoid proliferation of include/ subdirectories 2013-04-15 18:19:25 +02:00
char virtio-serial: fix command line compatibility. 2013-05-03 12:05:15 -05:00
core qdev: Introduce qdev_prop_set_globals_for_type() 2013-05-06 19:50:52 +02:00
cpu target-i386: Move APIC to ICC bus 2013-05-01 13:06:07 +02:00
cris hw: move private headers to hw/ subdirectories. 2013-04-08 18:13:16 +02:00
display qxl: Call spice_qxl_driver_unload from qxl_enter_vga_mode 2013-05-09 11:46:53 +02:00
dma Rename hexdump to avoid FreeBSD libutil conflict 2013-05-20 08:20:08 -05:00
gpio Remove unneeded type casts 2013-04-19 11:36:33 +02:00
i2c hw: move private headers to hw/ subdirectories. 2013-04-08 18:13:16 +02:00
i386 pci-assign: Add MSI affinity support 2013-05-22 07:40:10 -05:00
ide ide/macio: fix wrong opaque with TRIM support 2013-05-20 01:54:14 +02:00
input vmmouse: QOM'ify 2013-04-29 08:27:50 -05:00
intc remove double semicolons 2013-05-12 13:25:55 +04:00
isa ich9: kill cmos_s3 2013-04-24 11:50:18 -05:00
lm32 qdev: Drop taddr properties 2013-04-20 17:54:52 +00:00
m68k hw: move char devices to hw/char/, configure via default-configs/ 2013-04-08 18:13:14 +02:00
microblaze Remove unneeded type casts 2013-04-19 11:36:33 +02:00
mips remove some double-includes 2013-05-18 16:35:12 +04:00
misc remove some double-includes 2013-05-18 16:35:12 +04:00
moxie Trivial grammar and spelling fixes 2013-05-01 20:55:21 +04:00
net rtl8139: flush queued packets when RxBufPtr is written 2013-05-24 16:34:13 +02:00
nvram glib: Fix some misuses of gsize/size_t types 2013-05-22 07:40:09 -05:00
openrisc
pci hw: move PCI bridges to hw/pci-* or hw/ARCH 2013-04-08 18:13:14 +02:00
pci-bridge hw: move private headers to hw/ subdirectories. 2013-04-08 18:13:16 +02:00
pci-host hw/pci-host/versatile.c: Provide property for forcing broken IRQ mapping 2013-05-15 08:49:59 -05:00
ppc remove some double-includes 2013-05-18 16:35:12 +04:00
s390x virtio-net-x: forward the netclient name and type. 2013-05-15 08:48:25 -05:00
scsi virtio-scsi: fix the command line compatibility. 2013-05-03 12:05:15 -05:00
sd Typo, spelling and grammatical fixes 2013-04-12 14:33:20 +02:00
sh4 arm: fix location of some include files 2013-04-15 15:16:01 +02:00
sparc qdev: Drop taddr properties 2013-04-20 17:54:52 +00:00
sparc64 sparc64: allow 64 IRQ lines 2013-04-27 10:35:30 +00:00
ssi hw: move SSI controllers to hw/ssi/, configure via default-configs/ 2013-04-08 18:13:13 +02:00
timer remove some double-includes 2013-05-18 16:35:12 +04:00
tpm Move TPM passthrough specific command line options to backend structure 2013-04-23 10:40:40 -05:00
unicore32 console: add device link to QemuConsoles 2013-04-25 14:45:46 -05:00
usb remove double semicolons 2013-05-12 13:25:55 +04:00
virtio virtio: add virtio_bus_get_dev_path. 2013-05-16 14:18:38 -05:00
watchdog wdt_ib700: QOM'ify 2013-04-29 08:27:50 -05:00
xen target-i386: Replace MSI_SPACE_SIZE with APIC_SPACE_SIZE 2013-05-01 13:04:19 +02:00
xtensa sysemu: avoid proliferation of include/ subdirectories 2013-04-15 18:19:25 +02:00
Makefile.objs virtio: simplify Makefile conditionals 2013-04-19 16:18:11 +02:00