qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] rtl8139: flush queued packets when RxBufPtr is


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [PATCH] rtl8139: flush queued packets when RxBufPtr is written
Date: Wed, 22 May 2013 15:33:44 +0200

On Wed, May 22, 2013 at 2:53 PM, Andreas Färber <address@hidden> wrote:
> Am 22.05.2013 14:50, schrieb Stefan Hajnoczi:
>> Net queues support efficient "receive disable".  For example, tap's file
>> descriptor will not be polled while its peer has receive disabled.  This
>> saves CPU cycles for needlessly copying and then dropping packets which
>> the peer cannot receive.
>>
>> rtl8139 is missing the qemu_flush_queued_packets() call that wakes the
>> queue up when receive becomes possible again.
>>
>> As a result, the Windows 7 guest driver reaches a state where the
>> rtl8139 cannot receive packets.  The driver has actually refilled the
>> receive buffer but we never resume reception.
>>
>> The bug can be reproduced by running a large FTP 'get' inside a Windows
>> 7 guest:
>>
>>   $ qemu -netdev tap,id=tap0,...
>>          -device rtl8139,netdev=tap0
>>
>> The Linux guest driver does not trigger the bug, probably due to a
>> different buffer management strategy.
>>
>> Reported-by: Oliver Francke <address@hidden>
>> Signed-off-by: Stefan Hajnoczi <address@hidden>
>
> Sounds as if we should
>
> Cc: address@hidden

Yes, please.  Oliver just confirmed that it fixes the issue for him on
IRC so this is good for QEMU 1.5.1.

Stefan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]