From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:53240) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TCKoH-0008Mw-BD for qemu-devel@nongnu.org; Thu, 13 Sep 2012 21:35:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TCKoG-0004Nj-B0 for qemu-devel@nongnu.org; Thu, 13 Sep 2012 21:35:09 -0400 Received: from mx1.redhat.com ([209.132.183.28]:6995) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TCKoG-0004JU-2a for qemu-devel@nongnu.org; Thu, 13 Sep 2012 21:35:08 -0400 Message-ID: <505289C3.9000005@redhat.com> Date: Fri, 14 Sep 2012 09:34:59 +0800 From: Amos Kong MIME-Version: 1.0 References: <504DA1A9.2000908@redhat.com> <1347526299-27407-1-git-send-email-akong@redhat.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2] rtl8139: implement 8139cp link status List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: jasowang@redhat.com, mst@redhat.com, aliguori@us.ibm.com, stefanha@linux.vnet.ibm.com, qemu-devel@nongnu.org On 13/09/12 20:29, Stefan Hajnoczi wrote: > On Thu, Sep 13, 2012 at 9:51 AM, Amos Kong wrote: >> From: Jason Wang >> >> Add a link status chang callback and change the link status bit in BMSR >> & MSR accordingly. Tested in Linux/Windows guests. >> >> The link status bit of MediaStatus is infered from BasicModeStatus, >> they are reverse. >> >> Signed-off-by: Jason Wang >> Signed-off-by: Amos Kong >> --- >> v2: don't add MediaState in RTL8139State to avoid migration trouble >> --- >> hw/rtl8139.c | 19 +++++++++++++++++-- >> 1 files changed, 17 insertions(+), 2 deletions(-) >> >> diff --git a/hw/rtl8139.c b/hw/rtl8139.c >> index 844f1b8..fa949ca 100644 >> --- a/hw/rtl8139.c >> +++ b/hw/rtl8139.c >> @@ -167,7 +167,7 @@ enum IntrStatusBits { >> PCIErr = 0x8000, >> PCSTimeout = 0x4000, >> RxFIFOOver = 0x40, >> - RxUnderrun = 0x20, >> + RxUnderrun = 0x20, /* Packet Underrun / Link Change */ >> RxOverflow = 0x10, >> TxErr = 0x08, >> TxOK = 0x04, >> @@ -3007,7 +3007,7 @@ static uint32_t rtl8139_io_readb(void *opaque, uint8_t addr) >> break; >> >> case MediaStatus: >> - ret = 0xd0; >> + ret = 0xd0 | ~(s->BasicModeStatus & 0x0004); >> DPRINTF("MediaStatus read 0x%x\n", ret); >> break; > > This does not give any hint that BMSR & 0x4 is the link status > (inverted). only mentioned in the commitlog, will add a comment here. > I suggest adding an enum like the other constants at the > top of the file: > > ret = 0xd0 | (nc->link_down ? MSRLinkDown : 0); Ok, I will update the patch. > Regarding migration: do we migrate the NetClient->link_down field? If > we only migrate the status register value then the link may actually > be up at the net.c level. I tried to add 'MediaStatus' to 'struct RTL8139State', and update 'VMStateDescription vmstate_rtl8139', then the value of MediaStatus will be migrated. But the idea in v2 is better. > Stefan Thanks. -- Amos.