[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 0/13] Add generic packet buffering API
From: |
Mark McLoughlin |
Subject: |
Re: [Qemu-devel] [PATCH 0/13] Add generic packet buffering API |
Date: |
Tue, 19 May 2009 11:33:29 +0100 |
On Tue, 2009-05-19 at 13:18 +0300, Avi Kivity wrote:
> Mark McLoughlin wrote:
> > Hi,
> > This patch series works towards two[1] goals:
> >
> > 1) Merging the code in qemu-kvm which drains the tap file descriptor
> > when it is readable and buffers a packet if it fails to add it to
> > the NIC receive queue
> >
> > 2) Using the new TAP_SETSNDBUF ioctl() to put a limit on the number
> > of in-flight packets allowed on a tap device; in this case, if a
> > NIC pops a packet from its transmit queue, we need to be able to
> > buffer said packet if the tap queue is full
> >
>
> Isn't it better instead to unpop the buffer? The NIC tx ring already is
> a buffer, no need to add another one on top.
>
> It will need adjustments to the device models; for example we'll need
> virtqueue_pop_commit() after we're certain the tap had enough room for
> our packet and virtqueue_pop_cancel() (to unmap the buffers) if we don't.
Yep, it's possible with virtio. However, you can't unpop the buffer from
a tap file descriptor or socket.
The alternative in those cases is to implement buffering for each, or to
always check the receiving side has buffers available before popping. I
choose this option because checking in advance for each packet seems
expensive - i.e. a syscall for tap/socket or a trawl through the ring
for virtio.
Cheers,
Mark.
- [Qemu-devel] [PATCH 05/13] net: add fd_readv() handler to qemu_new_vlan_client() args, (continued)
- [Qemu-devel] [PATCH 05/13] net: add fd_readv() handler to qemu_new_vlan_client() args, Mark McLoughlin, 2009/05/19
- [Qemu-devel] [PATCH 06/13] net: re-name vc->fd_read() to vc->receive(), Mark McLoughlin, 2009/05/19
- [Qemu-devel] [PATCH 07/13] net: pass VLANClientState* as first arg to receive handlers, Mark McLoughlin, 2009/05/19
- [Qemu-devel] [PATCH 08/13] net: add return value to packet receive handler, Mark McLoughlin, 2009/05/19
- [Qemu-devel] [PATCH 09/13] net: return status from qemu_deliver_packet(), Mark McLoughlin, 2009/05/19
- [Qemu-devel] [PATCH 10/13] net: split out packet queueing and flushing into separate functions, Mark McLoughlin, 2009/05/22
- [Qemu-devel] [PATCH 11/13] net: add qemu_send_packet_async(), Mark McLoughlin, 2009/05/22
- [Qemu-devel] [PATCH 12/13] net: make use of async packet sending API in tap client, Mark McLoughlin, 2009/05/22
- [Qemu-devel] [PATCH 13/13] virtio-net: implement rx packet queueing, Mark McLoughlin, 2009/05/22
Re: [Qemu-devel] [PATCH 0/13] Add generic packet buffering API, Avi Kivity, 2009/05/19
- Re: [Qemu-devel] [PATCH 0/13] Add generic packet buffering API,
Mark McLoughlin <=
[Qemu-devel] Re: [PATCH 0/13] Add generic packet buffering API, Anthony Liguori, 2009/05/22