[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