diff options
author | Alexey Kardashevskiy <aik@ozlabs.ru> | 2013-05-02 20:22:03 +0000 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2013-05-06 17:22:48 +0200 |
commit | e0ff466c86bfb3b865865431bf8aa67287691917 (patch) | |
tree | 4f71794a28cc56a9e7821df9a4c80b7b0d3e501e /hw/net | |
parent | 43d03f299a017186e00f47c5b10f732492d496a6 (diff) | |
download | qemu-e0ff466c86bfb3b865865431bf8aa67287691917.zip qemu-e0ff466c86bfb3b865865431bf8aa67287691917.tar.gz qemu-e0ff466c86bfb3b865865431bf8aa67287691917.tar.bz2 |
spapr_llan: fix device reenabling
Normally, the "tap" device is polled by QEMU if a guest NIC can
receive packets. If a guest NIC is stopped during transfer (rmmod or
ifdown), it may still have packets in a queue which have to be send
to the guest before QEMU enables polling of a "tap" interface via
tap_update_fd_handler().
However the spapr_llan device was missing the qemu_flush_queued_packets()
call so the tap_send_completed() callback was never called and therefore
"tap" interface polling was not enabled ever.
The patch fixes this problem.
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'hw/net')
-rw-r--r-- | hw/net/spapr_llan.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/hw/net/spapr_llan.c b/hw/net/spapr_llan.c index 3150add..03a09f2 100644 --- a/hw/net/spapr_llan.c +++ b/hw/net/spapr_llan.c @@ -336,6 +336,8 @@ static target_ulong h_register_logical_lan(PowerPCCPU *cpu, spapr_vio_dma_set(sdev, VLAN_BD_ADDR(rec_queue), 0, VLAN_BD_LEN(rec_queue)); dev->isopen = 1; + qemu_flush_queued_packets(qemu_get_queue(dev->nic)); + return H_SUCCESS; } |