From mboxrd@z Thu Jan 1 00:00:00 1970 From: Charles Duffy Subject: Re: e1000 PXE breakage bisected down in kvm-userspace Date: Mon, 04 Aug 2008 20:07:03 -0500 Message-ID: References: <4897706A.8010206@codemonkey.ws> <489777F9.1080404@codemonkey.ws> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit To: kvm@vger.kernel.org Return-path: Received: from main.gmane.org ([80.91.229.2]:45859 "EHLO ciao.gmane.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1761575AbYHEBH0 (ORCPT ); Mon, 4 Aug 2008 21:07:26 -0400 Received: from list by ciao.gmane.org with local (Exim 4.43) id 1KQB1G-0007hz-8q for kvm@vger.kernel.org; Tue, 05 Aug 2008 01:07:22 +0000 Received: from rrcs-71-41-149-67.sw.biz.rr.com ([71.41.149.67]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 05 Aug 2008 01:07:22 +0000 Received: from Charles_Duffy by rrcs-71-41-149-67.sw.biz.rr.com with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 05 Aug 2008 01:07:22 +0000 In-Reply-To: <489777F9.1080404@codemonkey.ws> Sender: kvm-owner@vger.kernel.org List-ID: 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.