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
