summaryrefslogtreecommitdiff
path: root/hw
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
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')
-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. */