qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Mark McLoughlin <markmc@redhat.com>
To: Anthony Liguori <aliguori@us.ibm.com>
Cc: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 0/13] Add generic packet buffering API
Date: Tue, 19 May 2009 10:55:22 +0100	[thread overview]
Message-ID: <1242726931-5726-1-git-send-email-markmc@redhat.com> (raw)


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

        Rather than having each host backend and each NIC implement
packet buffering itself, the idea is to add extend the VLAN send queue
to do buffering.

        The API is fairly simple:

   - A qemu_send_packet() variant which takes a completion callback is
     added; if this returns zero, the sender should stop it's send
     queue until the completion callback is invoked

   - The VLANClientState receive() handler can now return zero,
     indicating that no space is available to receive the packet; when
     space becomes available later, the receiver must call
     qemu_flush_queued_packets() to re-queue any buffered packets
     which, in turn, will also cause the sender to re-start

        Note, these patches depend on two patches sent to the list by
Jan Kiszka:

  [PATCH 01/11] net: Don't deliver to disabled interfaces in qemu_sendv_packet
  [PATCH 02/11] net: Fix and improved ordered packet delivery

Cheers,
Mark.

[1] - Eagle-eyed readers will notice that I've neglected to actually
meet goal (2) with the patch set. Patience, patience :-)

             reply	other threads:[~2009-05-19  9:55 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-19  9:55 Mark McLoughlin [this message]
2009-05-19  9:55 ` [Qemu-devel] [PATCH 01/13] net: factor tap_read_packet() out of tap_send() Mark McLoughlin
2009-05-19  9:55   ` [Qemu-devel] [PATCH 02/13] net: move the tap buffer into TAPState Mark McLoughlin
2009-05-19  9:55     ` [Qemu-devel] [PATCH 03/13] net: vlan clients with no fd_can_read() can always receive Mark McLoughlin
2009-05-19  9:55       ` [Qemu-devel] [PATCH 04/13] net: only read from tapfd when we can send Mark McLoughlin
2009-05-19  9:55         ` [Qemu-devel] [PATCH 05/13] net: add fd_readv() handler to qemu_new_vlan_client() args Mark McLoughlin
2009-05-19  9:55           ` [Qemu-devel] [PATCH 06/13] net: re-name vc->fd_read() to vc->receive() Mark McLoughlin
2009-05-19  9:55             ` [Qemu-devel] [PATCH 07/13] net: pass VLANClientState* as first arg to receive handlers Mark McLoughlin
2009-05-19  9:55               ` [Qemu-devel] [PATCH 08/13] net: add return value to packet receive handler Mark McLoughlin
2009-05-19  9:55                 ` [Qemu-devel] [PATCH 09/13] net: return status from qemu_deliver_packet() Mark McLoughlin
2009-05-22 14:23                   ` [Qemu-devel] [PATCH 10/13] net: split out packet queueing and flushing into separate functions Mark McLoughlin
2009-05-22 14:24                     ` [Qemu-devel] [PATCH 11/13] net: add qemu_send_packet_async() Mark McLoughlin
2009-05-22 14:24                       ` [Qemu-devel] [PATCH 12/13] net: make use of async packet sending API in tap client Mark McLoughlin
2009-05-22 14:25                         ` [Qemu-devel] [PATCH 13/13] virtio-net: implement rx packet queueing Mark McLoughlin
2009-05-19 10:18 ` [Qemu-devel] [PATCH 0/13] Add generic packet buffering API Avi Kivity
2009-05-19 10:33   ` Mark McLoughlin
2009-05-19 11:56     ` Avi Kivity
2009-05-22 13:43 ` [Qemu-devel] " Anthony Liguori
2009-05-22 14:23   ` Mark McLoughlin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1242726931-5726-1-git-send-email-markmc@redhat.com \
    --to=markmc@redhat.com \
    --cc=aliguori@us.ibm.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).