On Mon, Feb 07, 2011 at 02:30:26PM +0200, Michael S. Tsirkin wrote: > The e1000 spec says: if software statically allocates > buffers, and uses memory read to check for completed descriptors, it > simply has to zero the status byte in the descriptor to make it ready > for reuse by hardware. This is not a hardware requirement (moving the > hardware tail pointer is), but is necessary for performing an in–memory > scan. > > Thus the guest does not have to clear the status byte. In case it > doesn't we need to clear EOP for all descriptors > except the last. While I don't know of any such guests, > it's probably a good idea to stick to the spec. > > Signed-off-by: Michael S. Tsirkin <m...@redhat.com> > Reported-by: Juan Quintela <quint...@redhat.com> > > --- > hw/e1000.c | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-)
This makes sense: if the guest didn't clear the end-of-packet bit but we're receiving a multi-buffer packet, clear EOP for all but the last descriptor. Reviewed-by: Stefan Hajnoczi <stefa...@linux.vnet.ibm.com>