[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL for-2.4 7/7] net: Flush queued packets when guest res
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PULL for-2.4 7/7] net: Flush queued packets when guest resumes |
Date: |
Mon, 20 Jul 2015 18:25:25 +0100 |
From: Fam Zheng <address@hidden>
Since commit 6e99c63 "net/socket: Drop net_socket_can_send" and friends,
net queues need to be explicitly flushed after qemu_can_send_packet()
returns false, because the netdev side will disable the polling of fd.
This fixes the case of "cont" after "stop" (or migration).
Signed-off-by: Fam Zheng <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
net/net.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/net/net.c b/net/net.c
index 6ff7fec..28a5597 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1257,14 +1257,19 @@ void qmp_set_link(const char *name, bool up, Error
**errp)
static void net_vm_change_state_handler(void *opaque, int running,
RunState state)
{
- /* Complete all queued packets, to guarantee we don't modify
- * state later when VM is not running.
- */
- if (!running) {
- NetClientState *nc;
- NetClientState *tmp;
+ NetClientState *nc;
+ NetClientState *tmp;
- QTAILQ_FOREACH_SAFE(nc, &net_clients, next, tmp) {
+ QTAILQ_FOREACH_SAFE(nc, &net_clients, next, tmp) {
+ if (running) {
+ /* Flush queued packets and wake up backends. */
+ if (nc->peer && qemu_can_send_packet(nc)) {
+ qemu_flush_queued_packets(nc->peer);
+ }
+ } else {
+ /* Complete all queued packets, to guarantee we don't modify
+ * state later when VM is not running.
+ */
qemu_flush_or_purge_queued_packets(nc, true);
}
}
--
2.4.3
- [Qemu-devel] [PULL for-2.4 0/7] Net patches, Stefan Hajnoczi, 2015/07/20
- [Qemu-devel] [PULL for-2.4 1/7] socket: pass correct size in net_socket_send(), Stefan Hajnoczi, 2015/07/20
- [Qemu-devel] [PULL for-2.4 2/7] net/vmxnet3: Refactor 'vmxnet_rx_pkt_attach_data', Stefan Hajnoczi, 2015/07/20
- [Qemu-devel] [PULL for-2.4 3/7] net/vmxnet3: Fix RX TCP/UDP checksum on partially summed packets, Stefan Hajnoczi, 2015/07/20
- [Qemu-devel] [PULL for-2.4 4/7] musicpal: Drop eth_can_receive, Stefan Hajnoczi, 2015/07/20
- [Qemu-devel] [PULL for-2.4 5/7] etraxfs_eth: Drop eth_can_receive, Stefan Hajnoczi, 2015/07/20
- [Qemu-devel] [PULL for-2.4 6/7] lan9118: Drop lan9118_can_receive, Stefan Hajnoczi, 2015/07/20
- [Qemu-devel] [PULL for-2.4 7/7] net: Flush queued packets when guest resumes,
Stefan Hajnoczi <=
- Re: [Qemu-devel] [PULL for-2.4 0/7] Net patches, Peter Maydell, 2015/07/21