From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:44375) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SzU09-00034u-0U for qemu-devel@nongnu.org; Thu, 09 Aug 2012 10:46:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SzU07-0000cl-SF for qemu-devel@nongnu.org; Thu, 09 Aug 2012 10:46:16 -0400 Received: from mail-gh0-f173.google.com ([209.85.160.173]:60799) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SzU07-0000bU-O4 for qemu-devel@nongnu.org; Thu, 09 Aug 2012 10:46:15 -0400 Received: by ghrr17 with SMTP id r17so492701ghr.4 for ; Thu, 09 Aug 2012 07:46:15 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Thu, 9 Aug 2012 16:45:54 +0200 Message-Id: <1344523557-28266-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH 0/3] net: add missing queue flush for e1000 and xen List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Jan Kiszka , Luigi Rizzo , Stefan Hajnoczi , Stefano Stabellini Luigi reminded me of these patches... When the guests replenish the receive ring buffer, the network device should flush its queue of pending packets. This is done with qemu_flush_queued_packets, and patches 2+3 add the missing call to two drivers, e1000 and xen. More may come later---no time to test them now. However, the device should not just retry delivery of packets that were already read from the tap device, it should also try to read more packets from the tap device. The latter requires a qemu_notify_event to force recomputation of the fd_sets. virtio already does this, but it is a layering violation; patch 1 moves the call from virtio to the network subsystem, so that e1000 and xen will then get it for free. Paolo Bonzini (3): net: notify iothread after flushing queue e1000: flush queue whenever can_receive can go from false to true xen: flush queue when getting an event hw/e1000.c | 4 ++++ hw/virtio-net.c | 4 ---- hw/xen_nic.c | 1 + net.c | 7 ++++++- net/queue.c | 5 +++-- net/queue.h | 2 +- 6 file modificati, 15 inserzioni(+), 8 rimozioni(-) -- 1.7.11.2