All of lore.kernel.org
 help / color / mirror / Atom feed
From: Florian Fainelli <florian@openwrt.org>
To: "Fleming Andy-AFLEMING" <afleming@freescale.com>
Cc: "netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	David Miller <davem@davemloft.net>
Subject: Re: mii_bus->read return checking in phy_device.c
Date: Fri, 4 Mar 2011 19:12:10 +0100	[thread overview]
Message-ID: <201103041912.10252.florian@openwrt.org> (raw)
In-Reply-To: <1FBC63C1-A8CE-4EFA-8864-62E12C0CFCB3@freescale.com>

On Friday 04 March 2011 19:06:20 Fleming Andy-AFLEMING wrote:
> On Mar 4, 2011, at 11:24, "Florian Fainelli" <florian@openwrt.org> wrote:
> > Hello Andy,
> > 
> > While debugging a PHY probing issue with the au1000_eth, I stumbled upon
> > this
> > 
> > in drivers/net/phy/phy_device.c:
> >        phy_reg = bus->read(bus, addr, MII_PHYSID1);
> >        
> >        if (phy_reg < 0)
> >        
> >                return -EIO;
> > 
> > most drivers implement phylib's mdio_read callback by simply returning
> > the contents of their MDIO register after a readl, ioread ... which is
> > unsigned. Would not it rather make sense to check for phy_reg <= 0
> > instead?
> 
> That isn't a check for a non-existent PHY.  PHY registers are unsigned
> 16-bit quantities.  The negative 32-bit return value would be the result
> of something going wrong in the bus transaction.

Ok, but 0 is not an acceptable value either for both ID1 and ID2.

> 
> Notice that later the code actually checks to see if the read value was
> mostly 1s...

What if the MDIO bus returns 0 instead of 1? Should that be fixed to return 
0xffff instead in the driver?

> 
> > This can lead for instance to believing that a PHY is present at a wrong
> > address because the MDIO read function returns 0 for that particular
> > register, which is logical because no PHY is present at that address.
> > 
> > I am asking in case I just miss something.
> > 
> > Thank you.
> > --
> > Florian
> 
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2011-03-04 18:10 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-04 17:25 mii_bus->read return checking in phy_device.c Florian Fainelli
2011-03-04 18:06 ` Fleming Andy-AFLEMING
2011-03-04 18:12   ` Florian Fainelli [this message]
2011-03-04 18:19     ` Fleming Andy-AFLEMING
2011-03-07  9:43       ` Florian Fainelli

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201103041912.10252.florian@openwrt.org \
    --to=florian@openwrt.org \
    --cc=afleming@freescale.com \
    --cc=davem@davemloft.net \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.