Patchwork gianfar: ensure ECNTRL[R100] is cleared on link state change

login
register
mail settings
Submitter Kumar Gala
Date Jan. 6, 2009, 8:52 p.m.
Message ID <1231275171-21388-1-git-send-email-galak@kernel.crashing.org>
Download mbox | patch
Permalink /patch/16853/
State Accepted
Commit f430e49e9e0cf821c090abedb399b80ebf0cb4c6
Headers show

Comments

Kumar Gala - Jan. 6, 2009, 8:52 p.m.
From: Leo Li <leo@rock.ap.freescale.net>

When changing the link between 100Mbps and 1Gbps in SGMII mode it was
found out that the link would stop working.  The issue is that ECNTRL[R100]
needs to be cleared when in 1Gbps mode.  Older reference manuals didn't
require the explicitly clearing but has since been found it that it is
needed.

Signed-off-by: Li Yang <leoli@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
---

Dave,

Please apply for 2.6.29 as it addresses a "HW" bug in real systems.

thanks

- k

 drivers/net/gianfar.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
Andy Fleming - Jan. 6, 2009, 8:56 p.m.
On Jan 6, 2009, at 2:52 PM, Kumar Gala wrote:

> From: Leo Li <leo@rock.ap.freescale.net>
>
> When changing the link between 100Mbps and 1Gbps in SGMII mode it was
> found out that the link would stop working.  The issue is that  
> ECNTRL[R100]
> needs to be cleared when in 1Gbps mode.  Older reference manuals  
> didn't
> require the explicitly clearing but has since been found it that it is
> needed.
>
> Signed-off-by: Li Yang <leoli@freescale.com>
> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>

Acked-by: Andy Fleming <afleming@freescale.com>
David Miller - Jan. 6, 2009, 10:08 p.m.
From: Andy Fleming <afleming@freescale.com>
Date: Tue, 6 Jan 2009 14:56:25 -0600

> 
> On Jan 6, 2009, at 2:52 PM, Kumar Gala wrote:
> 
> > From: Leo Li <leo@rock.ap.freescale.net>
> >
> > When changing the link between 100Mbps and 1Gbps in SGMII mode it was
> > found out that the link would stop working.  The issue is that ECNTRL[R100]
> > needs to be cleared when in 1Gbps mode.  Older reference manuals didn't
> > require the explicitly clearing but has since been found it that it is
> > needed.
> >
> > Signed-off-by: Li Yang <leoli@freescale.com>
> > Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
> 
> Acked-by: Andy Fleming <afleming@freescale.com>

Applied, thanks everyone.

Patch

diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
index c672ecf..7fcc3af 100644
--- a/drivers/net/gianfar.c
+++ b/drivers/net/gianfar.c
@@ -1973,6 +1973,8 @@  static void adjust_link(struct net_device *dev)
 			case 1000:
 				tempval =
 				    ((tempval & ~(MACCFG2_IF)) | MACCFG2_GMII);
+
+				ecntrl &= ~(ECNTRL_R100);
 				break;
 			case 100:
 			case 10: