[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] frame reordering in qemu_net_queue_send() ?
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] frame reordering in qemu_net_queue_send() ? |
Date: |
Thu, 31 May 2012 10:18:51 +0100 |
On Wed, May 30, 2012 at 8:59 AM, Luigi Rizzo <address@hidden> wrote:
> Hi,
> while investigating rx performance for emulated network devices
> (i am looking at the userspace version, relying on net=tap
> or similar approaches) i noticed the code
> in net/queue.c :: qemu_net_queue_send()
> which look strange to me (same goes for the iov version).
>
> The whole function is below, just for reference.
> My impression is that the call to qemu_net_queue_flush()
> is misplaced, and it should be before qemu_net_queue_deliver()
> otherwise the current packet is pushed out before anything
> was already in the queue.
>
> Does it make sense ?
>
> cheers
> luigi
>
> ssize_t qemu_net_queue_send(NetQueue *queue,
> VLANClientState *sender,
> unsigned flags,
> const uint8_t *data,
> size_t size,
> NetPacketSent *sent_cb)
> {
> ssize_t ret;
>
> if (queue->delivering) {
> return qemu_net_queue_append(queue, sender, flags, data, size,
> NULL);
> }
>
> ret = qemu_net_queue_deliver(queue, sender, flags, data, size);
> if (ret == 0) {
> qemu_net_queue_append(queue, sender, flags, data, size, sent_cb);
> return 0;
> }
>
> qemu_net_queue_flush(queue);
This of the case where delivering a packet causes additional
(re-entrant) qemu_net_queue_send() calls to this queue. We'll be in
->delivering state and queue those packets. After we've finished
delivering the initial packet we flush the queue.
This is a weird case but this is how I read the intention of the code.
Jan: maybe slirp can do this re-entrant qemu_net_queue_send()?
Stefan
- [Qemu-devel] frame reordering in qemu_net_queue_send() ?, Luigi Rizzo, 2012/05/30
- [Qemu-devel] frame reordering in qemu_net_queue_send() ?, Luigi Rizzo, 2012/05/30
- Re: [Qemu-devel] frame reordering in qemu_net_queue_send() ?,
Stefan Hajnoczi <=
- Re: [Qemu-devel] frame reordering in qemu_net_queue_send() ?, Luigi Rizzo, 2012/05/31
- Re: [Qemu-devel] frame reordering in qemu_net_queue_send() ?, Paolo Bonzini, 2012/05/31
- Re: [Qemu-devel] frame reordering in qemu_net_queue_send() ?, Jan Kiszka, 2012/05/31
- Re: [Qemu-devel] frame reordering in qemu_net_queue_send() ?, Zhi Yong Wu, 2012/05/31
- Re: [Qemu-devel] frame reordering in qemu_net_queue_send() ?, Paolo Bonzini, 2012/05/31
- Re: [Qemu-devel] frame reordering in qemu_net_queue_send() ?, Jan Kiszka, 2012/05/31
- Re: [Qemu-devel] frame reordering in qemu_net_queue_send() ?, Luigi Rizzo, 2012/05/31
- Re: [Qemu-devel] frame reordering in qemu_net_queue_send() ?, Jan Kiszka, 2012/05/31
- Re: [Qemu-devel] frame reordering in qemu_net_queue_send() ?, Zhi Yong Wu, 2012/05/31
- Re: [Qemu-devel] frame reordering in qemu_net_queue_send() ?, Jan Kiszka, 2012/05/31