From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark McLoughlin Subject: [PATCH 02/12] kvm: qemu: Remove virtio_net tx ring-full heuristic Date: Mon, 11 Aug 2008 21:12:05 +0100 Message-ID: <1218485535-877-3-git-send-email-markmc@redhat.com> References: <1218485535-877-1-git-send-email-markmc@redhat.com> <1218485535-877-2-git-send-email-markmc@redhat.com> Cc: kvm@vger.kernel.org, Mark McLoughlin To: Avi Kivity Return-path: Received: from mail01.svc.cra.dublin.eircom.net ([159.134.118.17]:38977 "HELO mail01.svc.cra.dublin.eircom.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1757531AbYHKUMe (ORCPT ); Mon, 11 Aug 2008 16:12:34 -0400 In-Reply-To: <1218485535-877-2-git-send-email-markmc@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: virtio_net tries to guess when it has received a tx notification from the guest whether it indicates that the guest has no more room in the tx ring and it should immediately flush the queued buffers. The heuristic is based on the fact that there are 128 buffer entries in the ring and each packet uses 2 buffers (i.e. the virtio_net_hdr and the packet's linear data). Using GSO or increasing the size of the rings will break that heuristic, so let's remove it and assume that any notification from the guest after we've disabled notifications indicates that we should flush our buffers. Signed-off-by: Mark McLoughlin --- qemu/hw/virtio-net.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) diff --git a/qemu/hw/virtio-net.c b/qemu/hw/virtio-net.c index 3a39c8f..b001475 100644 --- a/qemu/hw/virtio-net.c +++ b/qemu/hw/virtio-net.c @@ -175,8 +175,7 @@ static void virtio_net_handle_tx(VirtIODevice *vdev, VirtQueue *vq) { VirtIONet *n = to_virtio_net(vdev); - if (n->tx_timer_active && - (vq->vring.avail->idx - vq->last_avail_idx) == 64) { + if (n->tx_timer_active) { vq->vring.used->flags &= ~VRING_USED_F_NO_NOTIFY; qemu_del_timer(n->tx_timer); n->tx_timer_active = 0; -- 1.5.4.1