On Fri, Aug 21, 2015 at 02:59:24PM -0700, Vladislav Yasevich wrote: > When operation in standard mode, we currently return the size > of packet during buffer overflow. This consumes the overflow > packet. Return 0 instead so we can re-process the overflow packet > when we have room. > > This fixes issues with lost/dropped fragments of large messages. > > Signed-off-by: Vladislav Yasevich <vyase...@redhat.com> > --- > hw/net/rtl8139.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/net/rtl8139.c b/hw/net/rtl8139.c > index edbb61c..359e001 100644 > --- a/hw/net/rtl8139.c > +++ b/hw/net/rtl8139.c > @@ -1157,7 +1157,7 @@ static ssize_t rtl8139_do_receive(NetClientState *nc, > const uint8_t *buf, size_t > s->IntrStatus |= RxOverflow; > ++s->RxMissed; > rtl8139_update_irq(s); > - return size_; > + return 0;
Every .receive() return 0 must be paired with a qemu_flush_queued_packets() call. Is rtl8139_RxBufPtr_write() guaranteed to be called when the guest refills rx buffers?