qemu-e2k/hw/net
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
..
cadence_gem.c
dp8393x.c
e1000_regs.h
e1000.c
eepro100.c
etraxfs_eth.c
lan9118.c
lance.c
Makefile.objs
mcf_fec.c Remove unneeded type casts 2013-04-19 11:36:33 +02:00
milkymist-minimac2.c qdev: Drop taddr properties 2013-04-20 17:54:52 +00:00
mipsnet.c
ne2000-isa.c ne2000-isa: QOM'ify 2013-04-29 08:27:48 -05:00
ne2000.c
ne2000.h
opencores_eth.c
pcnet-pci.c
pcnet.c
pcnet.h
rtl8139.c rtl8139: flush queued packets when RxBufPtr is written 2013-05-24 16:34:13 +02:00
smc91c111.c
spapr_llan.c spapr_llan: fix device reenabling 2013-05-06 17:22:48 +02:00
stellaris_enet.c
vhost_net.c virtio: remove virtiobindings. 2013-04-24 11:50:20 -05:00
virtio-net.c virtio-net: dynamic network offloads configuration 2013-05-22 07:40:10 -05:00
vmware_utils.h
vmxnet3.c
vmxnet3.h
vmxnet_debug.h
vmxnet_rx_pkt.c
vmxnet_rx_pkt.h
vmxnet_tx_pkt.c include: avoid useless includes of exec/ headers 2013-04-15 18:19:26 +02:00
vmxnet_tx_pkt.h
xen_nic.c
xgmac.c sysemu: avoid proliferation of include/ subdirectories 2013-04-15 18:19:25 +02:00
xilinx_axienet.c stream: Remove app argument hack 2013-04-16 10:04:23 +02:00
xilinx_ethlite.c