Anthony Liguori wrote:
diff --git a/qemu/hw/e1000.c b/qemu/hw/e1000.c
index 1be69ec..6a07b0c 100644
--- a/qemu/hw/e1000.c
+++ b/qemu/hw/e1000.c
@@ -521,8 +521,8 @@ e1000_can_receive(void *opaque)
{
    E1000State *s = opaque;

-    return ((s->mac_reg[RCTL] & E1000_RCTL_EN) &&
-           s->mac_reg[RDH] != s->mac_reg[RDT]);
+    return (!(s->mac_reg[RCTL] & E1000_RCTL_EN) ||
+            s->mac_reg[RDH] != s->mac_reg[RDT]);
}

Having e1000_can_receive return true only if s->mac_reg[RDH] != s->mac_reg[RDT] means that the logic in e1000_receive() which sets the receive overflow flag is never reached.

I think it may be more correct to check only for s->mac_reg[RCTL] & E1000_RCTL_EN.

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to