summaryrefslogtreecommitdiff
path: root/hw/net
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-11-14 14:53:46 +0100
committerStefan Hajnoczi <stefanha@redhat.com>2013-11-15 13:25:39 +0100
commit8b7acc79b9adb4dda6cc867b90e3a1e873f4f7e8 (patch)
tree9f3055b64a4b08ee2723cd0bb822d743337e41ea /hw/net
parent5c5432e7d630592ddcc1876ac8a1505f8f14ef15 (diff)
downloadqemu-8b7acc79b9adb4dda6cc867b90e3a1e873f4f7e8.tar.gz
smc91c111: Fix receive starvation
In case the smc91c111 interface signals that it cannot receive more packets the packets are queued and further reception will be disabled. In case the interface is again ready to receive packets notify the upper layer. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'hw/net')
-rw-r--r--hw/net/smc91c111.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c
index f5963e2cbe..a8e29b3b42 100644
--- a/hw/net/smc91c111.c
+++ b/hw/net/smc91c111.c
@@ -185,6 +185,7 @@ static void smc91c111_release_packet(smc91c111_state *s, int packet)
s->allocated &= ~(1 << packet);
if (s->tx_alloc == 0x80)
smc91c111_tx_alloc(s);
+ qemu_flush_queued_packets(qemu_get_queue(s->nic));
}
/* Flush the TX FIFO. */