From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1M7Vgq-0008C5-12 for qemu-devel@nongnu.org; Fri, 22 May 2009 10:25:40 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1M7Vgl-0008A1-5v for qemu-devel@nongnu.org; Fri, 22 May 2009 10:25:39 -0400 Received: from [199.232.76.173] (port=45280 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1M7Vgk-00089o-UO for qemu-devel@nongnu.org; Fri, 22 May 2009 10:25:34 -0400 Received: from mx2.redhat.com ([66.187.237.31]:47228) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1M7Vgk-0000PA-AI for qemu-devel@nongnu.org; Fri, 22 May 2009 10:25:34 -0400 From: Mark McLoughlin In-Reply-To: <1243002297.29542.7.camel@blaa> References: <1242726931-5726-1-git-send-email-markmc@redhat.com> <1242726931-5726-2-git-send-email-markmc@redhat.com> <1242726931-5726-3-git-send-email-markmc@redhat.com> <1242726931-5726-4-git-send-email-markmc@redhat.com> <1242726931-5726-5-git-send-email-markmc@redhat.com> <1242726931-5726-6-git-send-email-markmc@redhat.com> <1242726931-5726-7-git-send-email-markmc@redhat.com> <1242726931-5726-8-git-send-email-markmc@redhat.com> <1242726931-5726-9-git-send-email-markmc@redhat.com> <1242726931-5726-10-git-send-email-markmc@redhat.com> <1243002216.29542.5.camel@blaa> <1243002261.29542.6.camel@blaa> <1243002297.29542.7.camel@blaa> Content-Type: text/plain Date: Fri, 22 May 2009 15:25:30 +0100 Message-Id: <1243002330.29542.8.camel@blaa> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] [PATCH 13/13] virtio-net: implement rx packet queueing Reply-To: Mark McLoughlin List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: qemu-devel@nongnu.org If we don't have room to receive a packet, we return zero from virtio_net_receive() and call qemu_flush_queued_packets() as soon as space becomes available. Signed-off-by: Mark McLoughlin --- hw/virtio-net.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/hw/virtio-net.c b/hw/virtio-net.c index 6b34c5a..a3ba890 100644 --- a/hw/virtio-net.c +++ b/hw/virtio-net.c @@ -269,6 +269,9 @@ static void virtio_net_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq) static void virtio_net_handle_rx(VirtIODevice *vdev, VirtQueue *vq) { + VirtIONet *n = to_virtio_net(vdev); + + qemu_flush_queued_packets(n->vc); } static int do_virtio_net_can_receive(VirtIONet *n, int bufsize) @@ -368,7 +371,7 @@ static ssize_t virtio_net_receive(VLANClientState *vc, const uint8_t *buf, size_ size_t hdr_len, offset, i; if (!do_virtio_net_can_receive(n, size)) - return -1; + return 0; if (!receive_filter(n, buf, size)) return size; -- 1.6.0.6