diff mbox

[U-Boot] net: fix m88e1111s PHY auto negotiation timeout

Message ID 1455605647-3849-1-git-send-email-thomas@wytron.com.tw
State Superseded
Delegated to: Joe Hershberger
Headers show

Commit Message

Thomas Chou Feb. 16, 2016, 6:54 a.m. UTC
After commit a058052c358c
("net: phy: do not read configuration register on reset")

both 3c120 and 10m50 devboard which use Marvel m88e1111s PHY got this
error message,

Net:   eth0: ethernet@400
=> ping 192.168.1.5
ethernet@400 Waiting for PHY auto negotiation to complete.... TIMEOUT !
Using ethernet@400 device
host 192.168.1.5 is alive

This is because the auto negotiation control bit was cleared by the new
phy_reset(). But the m88e1111s_config() does the soft-reset already,
there is no need to reset twice. The extra phy_reset() should be
removed.

Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
---
 drivers/net/phy/marvell.c | 2 --
 1 file changed, 2 deletions(-)

Comments

Stefan Roese Feb. 18, 2016, 7:47 a.m. UTC | #1
Hi Thomas,

On 16.02.2016 07:54, Thomas Chou wrote:
> After commit a058052c358c
> ("net: phy: do not read configuration register on reset")
>
> both 3c120 and 10m50 devboard which use Marvel m88e1111s PHY got this
> error message,
>
> Net:   eth0: ethernet@400
> => ping 192.168.1.5
> ethernet@400 Waiting for PHY auto negotiation to complete.... TIMEOUT !
> Using ethernet@400 device
> host 192.168.1.5 is alive
>
> This is because the auto negotiation control bit was cleared by the new
> phy_reset(). But the m88e1111s_config() does the soft-reset already,
> there is no need to reset twice. The extra phy_reset() should be
> removed.
>
> Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
> ---
>   drivers/net/phy/marvell.c | 2 --
>   1 file changed, 2 deletions(-)
>
> diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c
> index eab1558..5badfac 100644
> --- a/drivers/net/phy/marvell.c
> +++ b/drivers/net/phy/marvell.c
> @@ -271,8 +271,6 @@ static int m88e1111s_config(struct phy_device *phydev)
>
>   	genphy_config_aneg(phydev);
>
> -	phy_reset(phydev);
> -
>   	return 0;
>   }
>
>

I've also stumbled over this problem on some boards equipped with the
Marvell PHY. Could you please take a look at these patches instead:

http://patchwork.ozlabs.org/patch/581316/
http://patchwork.ozlabs.org/patch/581317/

Do they work for you?

Joe, could you please make sure to push these for this release? As its
a real bugfix.

Thanks,
Stefan
Alison Wang Feb. 18, 2016, 9:38 a.m. UTC | #2
> On 16.02.2016 07:54, Thomas Chou wrote:
> > After commit a058052c358c
> > ("net: phy: do not read configuration register on reset")
> >
> > both 3c120 and 10m50 devboard which use Marvel m88e1111s PHY got this
> > error message,
> >
> > Net:   eth0: ethernet@400
> > => ping 192.168.1.5
> > ethernet@400 Waiting for PHY auto negotiation to complete.... TIMEOUT !
> > Using ethernet@400 device
> > host 192.168.1.5 is alive
> >
> > This is because the auto negotiation control bit was cleared by the
> > new phy_reset(). But the m88e1111s_config() does the soft-reset
> > already, there is no need to reset twice. The extra phy_reset() should
> > be removed.
> >
> > Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
> > ---
> >   drivers/net/phy/marvell.c | 2 --
> >   1 file changed, 2 deletions(-)
> >
> > diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c
> > index eab1558..5badfac 100644
> > --- a/drivers/net/phy/marvell.c
> > +++ b/drivers/net/phy/marvell.c
> > @@ -271,8 +271,6 @@ static int m88e1111s_config(struct phy_device
> > *phydev)
> >
> >   	genphy_config_aneg(phydev);
> >
> > -	phy_reset(phydev);
> > -
> >   	return 0;
> >   }
> >
> >
> 
> I've also stumbled over this problem on some boards equipped with the
> Marvell PHY. Could you please take a look at these patches instead:
> 
> http://patchwork.ozlabs.org/patch/581316/
> http://patchwork.ozlabs.org/patch/581317/
> 
> Do they work for you?
> 
> Joe, could you please make sure to push these for this release? As its a
> real bugfix.
> 
> 
[Alison Wang] 
After commit a058052c358c
("net: phy: do not read configuration register on reset")

I find auto negotiation timeout error also occurs on Atheros's PHY AR8033 too. :(

Best Regards,
Alison Wang
Thomas Chou Feb. 25, 2016, 1:33 a.m. UTC | #3
Hi Stefan,

On 2016年02月18日 15:47, Stefan Roese wrote:
> I've also stumbled over this problem on some boards equipped with the
> Marvell PHY. Could you please take a look at these patches instead:
>
> http://patchwork.ozlabs.org/patch/581316/
> http://patchwork.ozlabs.org/patch/581317/
>
> Do they work for you?

Yes, they work great. Thanks a lot. I should have found your patches 
earlier. :)

Best regards,
Thomas
diff mbox

Patch

diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c
index eab1558..5badfac 100644
--- a/drivers/net/phy/marvell.c
+++ b/drivers/net/phy/marvell.c
@@ -271,8 +271,6 @@  static int m88e1111s_config(struct phy_device *phydev)
 
 	genphy_config_aneg(phydev);
 
-	phy_reset(phydev);
-
 	return 0;
 }