[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] net/tap.c: Possibly a way to stall tap input
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] net/tap.c: Possibly a way to stall tap input |
Date: |
Fri, 2 Aug 2013 09:33:19 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Thu, Aug 01, 2013 at 07:24:13PM +0200, Jan Kiszka wrote:
> On 2013-08-01 19:15, Jan Kiszka wrote:
> > Hi all,
> >
> > I'm tracking down a nasty stall of tap input over a custom 1.3.x QEMU
> > version. Under certain load, our tap backend stops reading from the char
> > device, and that even if we reset the guest. The frontend device
> > (pcnet32) is able to receive (can_receive would return > 0), but the
> ^^^^^^^
> Yes, the pcnet lacks qemu_flush_queued_packets, like certain other NIC
> models already have. We added that to pcnet_init and pcnet_start (patch
> will follow), but that didn't make a difference, likely due to what I
> described below.
Yes, you need to add qemu_flush_queued_packets() where the guest enables
RX or marks RX descriptors free (usually by writing to a hardware
register to update the RX ring index).
Please also confirm that you are using -netdev tap -device pcnet32
instead of the legacy -net syntax. The reason I'm asking is because I
remember the same issue with net/hub.c, which gets in the way if you use
legacy syntax (see 199ee608).
Hope this helps,
Stefan