1. 29 5月, 2013 10 次提交
  2. 26 5月, 2013 11 次提交
  3. 25 5月, 2013 18 次提交
  4. 24 5月, 2013 1 次提交
    • S
      rtl8139: flush queued packets when RxBufPtr is written · 00b7ade8
      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: NOliver Francke <oliver.francke@filoo.de>
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      00b7ade8