netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Doubts about the get_phy_id function.
@ 2008-10-29  9:12 Giuseppe CAVALLARO
  2008-11-03 20:24 ` Andy Fleming
  0 siblings, 1 reply; 2+ messages in thread
From: Giuseppe CAVALLARO @ 2008-10-29  9:12 UTC (permalink / raw)
  To: netdev

Hi All,
Using a bad PHY address, the physical device is erroneously attached to 
the MAC device driver.
This happens because the get_phy_id function reads zero from the 
PHYIR1/2 regs and never fails.
I'm facing this problem on some PHY devices (*) but I've not clear 
enough if this can actually depend on an HW issue (e.g.invalid  phy 
addresses have been left floating) or we need to apply the patch below. 
Indeed, it helps me to catch the problem and, as final result, the 
phy_connect always fails on wrong PHY address and the network interface 
cannot be opened.

(*) on other ones, the get_phy_id function reads 0xffff from PHYIR1/2 
regs and fails (as expected results) when I try to attach a wrong PHY 
address.

Welcome advice.
Best Regards,
Peppe

PS: if it makes sense for you, I can rework the patch and send it to the 
ML again.

diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index 8ad602c..8a1baf9 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -192,7 +192,7 @@ int get_phy_id(struct mii_bus *bus, int addr, u32 
*phy_id)
         * in the upper half */
        phy_reg = bus->read(bus, addr, MII_PHYSID1);
 
-       if (phy_reg < 0)
+       if (phy_reg <= 0)
                return -EIO;
 
        *phy_id = (phy_reg & 0xffff) << 16;
@@ -200,7 +200,7 @@ int get_phy_id(struct mii_bus *bus, int addr, u32 
*phy_id)
        /* Grab the bits from PHYIR2, and put them in the lower half */
        phy_reg = bus->read(bus, addr, MII_PHYSID2);
 
-       if (phy_reg < 0)
+       if (phy_reg <= 0)
                return -EIO;
 
        *phy_id |= (phy_reg & 0xffff);

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: Doubts about the get_phy_id function.
  2008-10-29  9:12 Doubts about the get_phy_id function Giuseppe CAVALLARO
@ 2008-11-03 20:24 ` Andy Fleming
  0 siblings, 0 replies; 2+ messages in thread
From: Andy Fleming @ 2008-11-03 20:24 UTC (permalink / raw)
  To: Giuseppe CAVALLARO; +Cc: netdev

On Wed, Oct 29, 2008 at 3:12 AM, Giuseppe CAVALLARO
<peppe.cavallaro@st.com> wrote:
> Hi All,
> Using a bad PHY address, the physical device is erroneously attached to the
> MAC device driver.
> This happens because the get_phy_id function reads zero from the PHYIR1/2
> regs and never fails.
> I'm facing this problem on some PHY devices (*) but I've not clear enough if
> this can actually depend on an HW issue (e.g.invalid  phy addresses have
> been left floating) or we need to apply the patch below. Indeed, it helps me
> to catch the problem and, as final result, the phy_connect always fails on
> wrong PHY address and the network interface cannot be opened.
>
> (*) on other ones, the get_phy_id function reads 0xffff from PHYIR1/2 regs
> and fails (as expected results) when I try to attach a wrong PHY address.

Some people seem to have PHYs that report 0 as their ID, so that's not
going to work.  I'm pretty sure your bus needs to be floating high, so
you might want to check that out.

Andy

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-11-03 20:24 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-29  9:12 Doubts about the get_phy_id function Giuseppe CAVALLARO
2008-11-03 20:24 ` Andy Fleming

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).