net: determine if packets can be sent before net queue deliver packets

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Zhi Yong Wu <wuzhy@linux.vnet.ibm.com>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
Zhi Yong Wu 2012-07-24 16:35:18 +01:00 committed by Stefan Hajnoczi
parent 86a77c3858
commit 691a4f3a95
4 changed files with 5 additions and 17 deletions

View file

@ -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);