From 691a4f3a953982d0af1896f5ab2832b7f19a980d Mon Sep 17 00:00:00 2001 From: Zhi Yong Wu Date: Tue, 24 Jul 2012 16:35:18 +0100 Subject: net: determine if packets can be sent before net queue deliver packets Reviewed-by: Paolo Bonzini Signed-off-by: Zhi Yong Wu Signed-off-by: Stefan Hajnoczi Reviewed-by: Laszlo Ersek --- net/queue.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'net/queue.c') diff --git a/net/queue.c b/net/queue.c index 0afd7830a4..e8030aafe4 100644 --- a/net/queue.c +++ b/net/queue.c @@ -176,8 +176,8 @@ ssize_t qemu_net_queue_send(NetQueue *queue, { ssize_t ret; - if (queue->delivering) { - return qemu_net_queue_append(queue, sender, flags, data, size, NULL); + if (queue->delivering || !qemu_can_send_packet(sender)) { + return qemu_net_queue_append(queue, sender, flags, data, size, sent_cb); } ret = qemu_net_queue_deliver(queue, sender, flags, data, size); @@ -200,8 +200,9 @@ ssize_t qemu_net_queue_send_iov(NetQueue *queue, { ssize_t ret; - if (queue->delivering) { - return qemu_net_queue_append_iov(queue, sender, flags, iov, iovcnt, NULL); + if (queue->delivering || !qemu_can_send_packet(sender)) { + return qemu_net_queue_append_iov(queue, sender, flags, + iov, iovcnt, sent_cb); } ret = qemu_net_queue_deliver_iov(queue, sender, flags, iov, iovcnt); -- cgit v1.2.3