qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2] rtl8139: implement 8139cp link status


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [PATCH v2] rtl8139: implement 8139cp link status
Date: Thu, 13 Sep 2012 13:29:09 +0100

On Thu, Sep 13, 2012 at 9:51 AM, Amos Kong <address@hidden> wrote:
> From: Jason Wang <address@hidden>
>
> 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 <address@hidden>
> Signed-off-by: Amos Kong <address@hidden>
> ---
> 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).  I suggest adding an enum like the other constants at the
top of the file:

ret = 0xd0 | (nc->link_down ? MSRLinkDown : 0);

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.

Stefan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]