public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
@ 2009-02-04 21:14 Peter Tyser
  2009-02-04 21:20 ` Andy Fleming
                   ` (2 more replies)
  0 siblings, 3 replies; 23+ messages in thread
From: Peter Tyser @ 2009-02-04 21:14 UTC (permalink / raw)
  To: u-boot

Previously, waiting for auto-negotiation would only occur if a valid
link had been detected.  Problems arose when attempting to use a
tsec immediately after bootup but before link was achieved, eg:
=> dhcp
Auto-neg error, defaulting to 10BT/HD
eTSEC1: No link.
Auto-neg error, defaulting to 10BT/HD
eTSEC2: No link.
=>

With this patch applied the same operation as above resulted in:
=> dhcp
Waiting for PHY auto negotiation to complete. done
Enet starting in 1000BT/FD
Speed: 1000, full duplex

Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
---

 drivers/net/tsec.c |   19 +++++++++----------
 1 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c
index dc90f23..2e30fe9 100644
--- a/drivers/net/tsec.c
+++ b/drivers/net/tsec.c
@@ -352,8 +352,8 @@ uint mii_cr_init(uint mii_reg, struct tsec_private * priv)
 		return MIIM_CR_INIT;
 }
 
-/* Parse the status register for link, and then do
- * auto-negotiation
+/*
+ * Wait for auto-negotiation to complete, then determine link
  */
 uint mii_parse_sr(uint mii_reg, struct tsec_private * priv)
 {
@@ -362,8 +362,7 @@ uint mii_parse_sr(uint mii_reg, struct tsec_private * priv)
 	 * (ie - we're capable and it's not done)
 	 */
 	mii_reg = read_phy_reg(priv, MIIM_STATUS);
-	if ((mii_reg & MIIM_STATUS_LINK) && (mii_reg & PHY_BMSR_AUTN_ABLE)
-	    && !(mii_reg & PHY_BMSR_AUTN_COMP)) {
+	if ((mii_reg & PHY_BMSR_AUTN_ABLE) && !(mii_reg & PHY_BMSR_AUTN_COMP)) {
 		int i = 0;
 
 		puts("Waiting for PHY auto negotiation to complete");
@@ -384,15 +383,15 @@ uint mii_parse_sr(uint mii_reg, struct tsec_private * priv)
 			mii_reg = read_phy_reg(priv, MIIM_STATUS);
 		}
 		puts(" done\n");
-		priv->link = 1;
+
+		/* Link status bit is latched low, read it again */
+		mii_reg = read_phy_reg(priv, MIIM_STATUS);
+
 		udelay(500000);	/* another 500 ms (results in faster booting) */
-	} else {
-		if (mii_reg & MIIM_STATUS_LINK)
-			priv->link = 1;
-		else
-			priv->link = 0;
 	}
 
+	priv->link = mii_reg & MIIM_STATUS_LINK ? 1 : 0;
+
 	return 0;
 }
 
-- 
1.6.0.2.GIT

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-04 21:14 [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link Peter Tyser
@ 2009-02-04 21:20 ` Andy Fleming
  2009-02-04 21:26   ` Wolfgang Denk
  2009-02-04 21:49   ` Scott Wood
  2009-07-19 20:14 ` Peter Tyser
  2009-08-21 17:35 ` Ben Warren
  2 siblings, 2 replies; 23+ messages in thread
From: Andy Fleming @ 2009-02-04 21:20 UTC (permalink / raw)
  To: u-boot

On Wed, Feb 4, 2009 at 3:14 PM, Peter Tyser <ptyser@xes-inc.com> wrote:
> Previously, waiting for auto-negotiation would only occur if a valid
> link had been detected.  Problems arose when attempting to use a
> tsec immediately after bootup but before link was achieved, eg:
> => dhcp
> Auto-neg error, defaulting to 10BT/HD
> eTSEC1: No link.
> Auto-neg error, defaulting to 10BT/HD
> eTSEC2: No link.
> =>

Hmmm....I made that change for a reason.  Waiting for autonegotiation
to finish on a tsec with no link was quite tiresome.  If you've hooked
up the 4th tsec, and try to boot, you end up waiting for *three* tsecs
to timeout.  If dhcp fails because the link isn't up you can always
try again, or add a delay before dhcp starts so that the link is up.

I'm open to other suggestions, but I really don't want to go back to
the old behavior.

Andy

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-04 21:20 ` Andy Fleming
@ 2009-02-04 21:26   ` Wolfgang Denk
  2009-02-04 21:45     ` Peter Tyser
  2009-02-04 23:07     ` Andy Fleming
  2009-02-04 21:49   ` Scott Wood
  1 sibling, 2 replies; 23+ messages in thread
From: Wolfgang Denk @ 2009-02-04 21:26 UTC (permalink / raw)
  To: u-boot

Dear Andy Fleming,

In message <2acbd3e40902041320l3bce93c1p989c4c33ca8e7ae@mail.gmail.com> you wrote:
>
> Hmmm....I made that change for a reason.  Waiting for autonegotiation
> to finish on a tsec with no link was quite tiresome.  If you've hooked
> up the 4th tsec, and try to boot, you end up waiting for *three* tsecs
> to timeout.  If dhcp fails because the link isn't up you can always
> try again, or add a delay before dhcp starts so that the link is up.

Why that? Don't you always enable only the interface you are trying to
use?

That would be a bug that needs to be fixed.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Unix: Some say the learning curve is steep,  but  you  only  have  to
climb it once.                                      - Karl Lehenbauer

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-04 21:26   ` Wolfgang Denk
@ 2009-02-04 21:45     ` Peter Tyser
  2009-02-04 23:07     ` Andy Fleming
  1 sibling, 0 replies; 23+ messages in thread
From: Peter Tyser @ 2009-02-04 21:45 UTC (permalink / raw)
  To: u-boot

On Wed, 2009-02-04 at 22:26 +0100, Wolfgang Denk wrote:
> Dear Andy Fleming,
> 
> In message <2acbd3e40902041320l3bce93c1p989c4c33ca8e7ae@mail.gmail.com> you wrote:
> >
> > Hmmm....I made that change for a reason.  Waiting for autonegotiation
> > to finish on a tsec with no link was quite tiresome.  If you've hooked
> > up the 4th tsec, and try to boot, you end up waiting for *three* tsecs
> > to timeout.  If dhcp fails because the link isn't up you can always
> > try again, or add a delay before dhcp starts so that the link is up.
> 
> Why that? Don't you always enable only the interface you are trying to
> use?
> 
> That would be a bug that needs to be fixed.

It seems like the workaround for the "4 tsec autonegotiation delay" you
mention is to set a sane "ethact" value when you know which port you are
going to be using.  However, there is no good workaround for waiting for
link other than adding an arbitrary delay to the boot process which is
pretty hokey, thus the patch.

Best,
Peter

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-04 21:20 ` Andy Fleming
  2009-02-04 21:26   ` Wolfgang Denk
@ 2009-02-04 21:49   ` Scott Wood
  2009-02-04 21:58     ` Wolfgang Denk
  1 sibling, 1 reply; 23+ messages in thread
From: Scott Wood @ 2009-02-04 21:49 UTC (permalink / raw)
  To: u-boot

Andy Fleming wrote:
> Hmmm....I made that change for a reason.  Waiting for autonegotiation
> to finish on a tsec with no link was quite tiresome.  If you've hooked
> up the 4th tsec, and try to boot, you end up waiting for *three* tsecs
> to timeout.  If dhcp fails because the link isn't up you can always
> try again, or add a delay before dhcp starts so that the link is up.
> 
> I'm open to other suggestions, but I really don't want to go back to
> the old behavior.

Is there any way that you could do the auto-negotiation in parallel?

Better yet if you could send bootp/dhcp requests to each one as it comes 
up, and abort the process upon the first valid bootp/dhcp reply.

-Scott

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-04 21:49   ` Scott Wood
@ 2009-02-04 21:58     ` Wolfgang Denk
  2009-02-04 22:00       ` Scott Wood
  2009-02-06 13:16       ` Jerry Van Baren
  0 siblings, 2 replies; 23+ messages in thread
From: Wolfgang Denk @ 2009-02-04 21:58 UTC (permalink / raw)
  To: u-boot

Dear Scott Wood,

In message <498A0D5C.5060901@freescale.com> you wrote:
> Andy Fleming wrote:
> > Hmmm....I made that change for a reason.  Waiting for autonegotiation
> > to finish on a tsec with no link was quite tiresome.  If you've hooked
> > up the 4th tsec, and try to boot, you end up waiting for *three* tsecs
> > to timeout.  If dhcp fails because the link isn't up you can always
> > try again, or add a delay before dhcp starts so that the link is up.
> > 
> > I'm open to other suggestions, but I really don't want to go back to
> > the old behavior.
> 
> Is there any way that you could do the auto-negotiation in parallel?

You definitely do not want to do that.

Requirement is NOT to initialize network interfaces unless used by
U-Boot.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Objects in mirror are closer than they appear.

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-04 21:58     ` Wolfgang Denk
@ 2009-02-04 22:00       ` Scott Wood
  2009-02-04 22:19         ` Wolfgang Denk
  2009-02-06 13:16       ` Jerry Van Baren
  1 sibling, 1 reply; 23+ messages in thread
From: Scott Wood @ 2009-02-04 22:00 UTC (permalink / raw)
  To: u-boot

Wolfgang Denk wrote:
> Dear Scott Wood,
> 
> In message <498A0D5C.5060901@freescale.com> you wrote:
>> Andy Fleming wrote:
>>> Hmmm....I made that change for a reason.  Waiting for autonegotiation
>>> to finish on a tsec with no link was quite tiresome.  If you've hooked
>>> up the 4th tsec, and try to boot, you end up waiting for *three* tsecs
>>> to timeout.  If dhcp fails because the link isn't up you can always
>>> try again, or add a delay before dhcp starts so that the link is up.
>>>
>>> I'm open to other suggestions, but I really don't want to go back to
>>> the old behavior.
>> Is there any way that you could do the auto-negotiation in parallel?
> 
> You definitely do not want to do that.
> 
> Requirement is NOT to initialize network interfaces unless used by
> U-Boot.

This would be in a case where the user *asks* for all the network 
interfaces to be used.  How is it different than the current behavior of 
rotating on a timeout?

-Scott

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-04 22:00       ` Scott Wood
@ 2009-02-04 22:19         ` Wolfgang Denk
  0 siblings, 0 replies; 23+ messages in thread
From: Wolfgang Denk @ 2009-02-04 22:19 UTC (permalink / raw)
  To: u-boot

Dear Scott Wood,

In message <498A100E.4080807@freescale.com> you wrote:
>
> > Requirement is NOT to initialize network interfaces unless used by
> > U-Boot.
> 
> This would be in a case where the user *asks* for all the network 

This is impossible. U-Boot will always use only exactly one interfce
at a time. And before you initialize the next interface it is
required to shut down the previous one.

> interfaces to be used.  How is it different than the current behavior of 
> rotating on a timeout?

In that only one interface (maximum) is active all at any time.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The trouble with our times is that the future is not what it used  to
be.                                                     - Paul Valery

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-04 21:26   ` Wolfgang Denk
  2009-02-04 21:45     ` Peter Tyser
@ 2009-02-04 23:07     ` Andy Fleming
  2009-02-05 16:27       ` Peter Tyser
  1 sibling, 1 reply; 23+ messages in thread
From: Andy Fleming @ 2009-02-04 23:07 UTC (permalink / raw)
  To: u-boot

On Wed, Feb 4, 2009 at 3:26 PM, Wolfgang Denk <wd@denx.de> wrote:
> Dear Andy Fleming,
>
> In message <2acbd3e40902041320l3bce93c1p989c4c33ca8e7ae@mail.gmail.com> you wrote:
>>
>> Hmmm....I made that change for a reason.  Waiting for autonegotiation
>> to finish on a tsec with no link was quite tiresome.  If you've hooked
>> up the 4th tsec, and try to boot, you end up waiting for *three* tsecs
>> to timeout.  If dhcp fails because the link isn't up you can always
>> try again, or add a delay before dhcp starts so that the link is up.
>
> Why that? Don't you always enable only the interface you are trying to
> use?

The problem is that you don't always know which interface you have
hooked up.  So u-boot tries the one set in ethact, and then the next,
etc.  With the old method, the penalty for being wrong was quite high.
 I hadn't run into an issue with the link not being up.  Why don't we
look up the spec, and find out the maximum time we'd have to wait for
that to happen.  That way we get the best of both worlds.  My sense is
that the link comes up fast, but autonegotiation potentially takes a
while.

Andy

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-04 23:07     ` Andy Fleming
@ 2009-02-05 16:27       ` Peter Tyser
  2009-02-06 13:32         ` Jerry Van Baren
  0 siblings, 1 reply; 23+ messages in thread
From: Peter Tyser @ 2009-02-05 16:27 UTC (permalink / raw)
  To: u-boot

On Wed, 2009-02-04 at 17:07 -0600, Andy Fleming wrote:
> On Wed, Feb 4, 2009 at 3:26 PM, Wolfgang Denk <wd@denx.de> wrote:
> > Dear Andy Fleming,
> >
> > In message <2acbd3e40902041320l3bce93c1p989c4c33ca8e7ae@mail.gmail.com> you wrote:
> >>
> >> Hmmm....I made that change for a reason.  Waiting for autonegotiation
> >> to finish on a tsec with no link was quite tiresome.  If you've hooked
> >> up the 4th tsec, and try to boot, you end up waiting for *three* tsecs
> >> to timeout.  If dhcp fails because the link isn't up you can always
> >> try again, or add a delay before dhcp starts so that the link is up.
> >
> > Why that? Don't you always enable only the interface you are trying to
> > use?
> 
> The problem is that you don't always know which interface you have
> hooked up.  So u-boot tries the one set in ethact, and then the next,
> etc.  With the old method, the penalty for being wrong was quite high.
>  I hadn't run into an issue with the link not being up.  Why don't we
> look up the spec, and find out the maximum time we'd have to wait for
> that to happen.  That way we get the best of both worlds.  My sense is
> that the link comes up fast, but autonegotiation potentially takes a
> while.

My understanding was that link was was never achieved until
autonegotiation was finished.  How could link be up before
autonegotiation was complete?

With the original code I always saw 1 of 2 situations with a variety of
Broadcom PHYs:
1. Autonegotiation completed and link was detected
2. Autonegotiation was in process and link was not detected

I never saw the case that the code referenced:
3. Autonegotiation was in process and link was detected

Do others see #3?

Thanks,
Peter

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-04 21:58     ` Wolfgang Denk
  2009-02-04 22:00       ` Scott Wood
@ 2009-02-06 13:16       ` Jerry Van Baren
  2009-02-06 17:16         ` Ben Warren
  1 sibling, 1 reply; 23+ messages in thread
From: Jerry Van Baren @ 2009-02-06 13:16 UTC (permalink / raw)
  To: u-boot

Wolfgang Denk wrote:
> Dear Scott Wood,
> 
> In message <498A0D5C.5060901@freescale.com> you wrote:
>> Andy Fleming wrote:
>>> Hmmm....I made that change for a reason.  Waiting for autonegotiation
>>> to finish on a tsec with no link was quite tiresome.  If you've hooked
>>> up the 4th tsec, and try to boot, you end up waiting for *three* tsecs
>>> to timeout.  If dhcp fails because the link isn't up you can always
>>> try again, or add a delay before dhcp starts so that the link is up.
>>>
>>> I'm open to other suggestions, but I really don't want to go back to
>>> the old behavior.
>> Is there any way that you could do the auto-negotiation in parallel?

Excellent suggestion!

Related suggestion: if we knew that the PHY was strapped to start 
autonegotiation on power up (it is a board-specific option, typically 
true), we could enhance the code to use those autonegotiation results 
rather than hitting the PHY with the reset hammer and restarting 
autonegotiation.  This would have an added advantage of "reducing" 
network start up time by 2 seconds (assuming normal power up time is 
more than 2 seconds) by overlapping the software initialization and PHY 
autonegotiation.

> You definitely do not want to do that.
> 
> Requirement is NOT to initialize network interfaces unless used by
> U-Boot.

Autonegotiation is *not necessarily* a violation of this principle.  The 
autonegotiation is in the PHY and is (should be) logically completely 
separate from initializing the network interface (MAC).

Just because the PHY is ready to run should have no impact on u-boot or 
linux start up.  Case in point: most PHYs actually start their 
autonegotiation when power is applied (it typically is a strapping option).

Caveats:
* I have not looked at the code, but the PHY initialization is probably 
coupled in s/w with the MAC (ethernet chip) initialization.  This would 
have to be changed to decouple the two.

* Typically, PHYs have an interrupt output line.  I'm assuming here that 
the interrupt is disabled.  If the interrupt is *enabled,* it *would* 
violate u-boot's ground rule about not leaving hardware grenades laying 
around.  The interrupt can be disabled in the PHY itself or at the CPU 
end of the interrupt line.
   1) It would be very unusual to have the interrupt enabled in u-boot.
        I would be surprised if any PHY initialization enables the
        interrupt (it is a control bit in a register in the PHY,
        I forgot if it is a standard register or PHY-specific).
   2) If a PHY interrupt causes a problem in linux, it is a driver bug
        IMHO because it would mean the linux driver enabled the interrupt
        before initializing the handler.  This would be a race condition
        bug regardless of what u-boot does with the PHY and I trust none
        of these are present in linux.  ;-/

> Best regards,
> 
> Wolfgang Denk

Ditto,
gvb

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-05 16:27       ` Peter Tyser
@ 2009-02-06 13:32         ` Jerry Van Baren
  2009-02-06 18:49           ` Andy Fleming
  0 siblings, 1 reply; 23+ messages in thread
From: Jerry Van Baren @ 2009-02-06 13:32 UTC (permalink / raw)
  To: u-boot

Peter Tyser wrote:
> On Wed, 2009-02-04 at 17:07 -0600, Andy Fleming wrote:
>> On Wed, Feb 4, 2009 at 3:26 PM, Wolfgang Denk <wd@denx.de> wrote:
>>> Dear Andy Fleming,
>>>
>>> In message <2acbd3e40902041320l3bce93c1p989c4c33ca8e7ae@mail.gmail.com> you wrote:
>>>> Hmmm....I made that change for a reason.  Waiting for autonegotiation
>>>> to finish on a tsec with no link was quite tiresome.  If you've hooked
>>>> up the 4th tsec, and try to boot, you end up waiting for *three* tsecs
>>>> to timeout.  If dhcp fails because the link isn't up you can always
>>>> try again, or add a delay before dhcp starts so that the link is up.
>>> Why that? Don't you always enable only the interface you are trying to
>>> use?
>> The problem is that you don't always know which interface you have
>> hooked up.  So u-boot tries the one set in ethact, and then the next,
>> etc.  With the old method, the penalty for being wrong was quite high.
>>  I hadn't run into an issue with the link not being up.  Why don't we
>> look up the spec, and find out the maximum time we'd have to wait for
>> that to happen.  That way we get the best of both worlds.  My sense is
>> that the link comes up fast, but autonegotiation potentially takes a
>> while.

2 seconds minimum, it is written in the autonegotiation spec.  If you 
add the spec-required minimum times for each step of the dance, it is 2 
seconds.  It could take longer, but I've never seen anything but 2 seconds.

> My understanding was that link was was never achieved until
> autonegotiation was finished.  How could link be up before
> autonegotiation was complete?
> 
> With the original code I always saw 1 of 2 situations with a variety of
> Broadcom PHYs:
> 1. Autonegotiation completed and link was detected
> 2. Autonegotiation was in process and link was not detected
> 
> I never saw the case that the code referenced:
> 3. Autonegotiation was in process and link was detected
> 
> Do others see #3?
> 
> Thanks,
> Peter

I never tried #3 personally, but my understanding of the link and 
autonegotiation dance is that #3 is not possible.

You may see what appears to be #3 *if* your PHY is strapped to start 
autonegotiation on application of power (typically true) and *if* you 
don't do a software reset on the PHY as part of your power up sequence 
(see also my previous email on this thread).  This really isn't #3, it is...
4. Strap the PHY to autonegotiate on application of power and use the
      results from that rather than resetting the PHY and re-starting
      auto-negotiation in software.

Best regards,
gvb

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-06 13:16       ` Jerry Van Baren
@ 2009-02-06 17:16         ` Ben Warren
  0 siblings, 0 replies; 23+ messages in thread
From: Ben Warren @ 2009-02-06 17:16 UTC (permalink / raw)
  To: u-boot

Jerry Van Baren wrote:
> Wolfgang Denk wrote:
>   
>> Dear Scott Wood,
>>
>> In message <498A0D5C.5060901@freescale.com> you wrote:
>>     
>>> Andy Fleming wrote:
>>>       
>>>> Hmmm....I made that change for a reason.  Waiting for autonegotiation
>>>> to finish on a tsec with no link was quite tiresome.  If you've hooked
>>>> up the 4th tsec, and try to boot, you end up waiting for *three* tsecs
>>>> to timeout.  If dhcp fails because the link isn't up you can always
>>>> try again, or add a delay before dhcp starts so that the link is up.
>>>>
>>>> I'm open to other suggestions, but I really don't want to go back to
>>>> the old behavior.
>>>>         
>>> Is there any way that you could do the auto-negotiation in parallel?
>>>       
>
> Excellent suggestion!
>
> Related suggestion: if we knew that the PHY was strapped to start 
> autonegotiation on power up (it is a board-specific option, typically 
> true), we could enhance the code to use those autonegotiation results 
> rather than hitting the PHY with the reset hammer and restarting 
> autonegotiation.  This would have an added advantage of "reducing" 
> network start up time by 2 seconds (assuming normal power up time is 
> more than 2 seconds) by overlapping the software initialization and PHY 
> autonegotiation.
>
>   
I think this is a good idea.  Serial autonegotiation is really such a 
time killer and has little to do with software, why not at least do a 
best effort attempt at letting all PHYs (or as many as the board 
developer feels like) autonegotiate as early in the process as possible?
>> You definitely do not want to do that.
>>
>> Requirement is NOT to initialize network interfaces unless used by
>> U-Boot.
>>     
>
> Autonegotiation is *not necessarily* a violation of this principle.  The 
> autonegotiation is in the PHY and is (should be) logically completely 
> separate from initializing the network interface (MAC).
>
> Just because the PHY is ready to run should have no impact on u-boot or 
> linux start up.  Case in point: most PHYs actually start their 
> autonegotiation when power is applied (it typically is a strapping option).
>
> Caveats:
> * I have not looked at the code, but the PHY initialization is probably 
> coupled in s/w with the MAC (ethernet chip) initialization.  This would 
> have to be changed to decouple the two.
>   
Currently, it depends greatly on the interface since each does its own 
thing.   I have some PHY-related development ongoing (phylib branch of 
the net tree) that leverages heavily from the Linux PHY drivers and some 
existing U-boot drivers that will let the user specify all sorts of 
things in board code.  I'd hoped to get it into the current release but 
that date's creeping up and  I'm low on time.  I hope to start RFCing it 
soon so in the following release we can migrate as many ethernet drivers 
as possible.  Anyway, with it we should be able to at least start AN via 
software in parallel, if desired of course.
> * Typically, PHYs have an interrupt output line.  I'm assuming here that 
> the interrupt is disabled.  If the interrupt is *enabled,* it *would* 
> violate u-boot's ground rule about not leaving hardware grenades laying 
> around.  The interrupt can be disabled in the PHY itself or at the CPU 
> end of the interrupt line.
>    1) It would be very unusual to have the interrupt enabled in u-boot.
>         I would be surprised if any PHY initialization enables the
>         interrupt (it is a control bit in a register in the PHY,
>         I forgot if it is a standard register or PHY-specific).
>    2) If a PHY interrupt causes a problem in linux, it is a driver bug
>         IMHO because it would mean the linux driver enabled the interrupt
>         before initializing the handler.  This would be a race condition
>         bug regardless of what u-boot does with the PHY and I trust none
>         of these are present in linux.  ;-/
>
>   
>> Best regards,
>>
>> Wolfgang Denk
>>     
>
> Ditto,
> gvb
>
> _________
Good discussion.

cheers,
Ben

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-06 13:32         ` Jerry Van Baren
@ 2009-02-06 18:49           ` Andy Fleming
  2009-02-06 19:30             ` Jerry Van Baren
  0 siblings, 1 reply; 23+ messages in thread
From: Andy Fleming @ 2009-02-06 18:49 UTC (permalink / raw)
  To: u-boot

On Fri, Feb 6, 2009 at 7:32 AM, Jerry Van Baren <gerald.vanbaren@ge.com> wrote:
> Peter Tyser wrote:
>>

>>> The problem is that you don't always know which interface you have
>>> hooked up.  So u-boot tries the one set in ethact, and then the next,
>>> etc.  With the old method, the penalty for being wrong was quite high.
>>>  I hadn't run into an issue with the link not being up.  Why don't we
>>> look up the spec, and find out the maximum time we'd have to wait for
>>> that to happen.  That way we get the best of both worlds.  My sense is
>>> that the link comes up fast, but autonegotiation potentially takes a
>>> while.
>
> 2 seconds minimum, it is written in the autonegotiation spec.  If you add
> the spec-required minimum times for each step of the dance, it is 2 seconds.
>  It could take longer, but I've never seen anything but 2 seconds.

Could you point me at where in the spec it says this?  I've been
digging around in it, and found nothing concrete so far.


>
>> My understanding was that link was was never achieved until
>> autonegotiation was finished.  How could link be up before
>> autonegotiation was complete?


Actually, as best I can tell, the link status is not well-defined.
The PHY designers are allowed to decide for themselves when the link
is considered "up".  The link state machine goes through several
states, and before auto-negotiation completes, the link can be in a
"READY" state.

Anyway, I'm fairly convinced that we can't assume the link will come
up, first, but I'd like to review the part of the spec where it says 2
seconds, and then I suggest Peter modify his patch to change the
timeout to 2 seconds.  I'm also trying to figure out why I remember
the timeout being 30 seconds, when it is clearly setup to be 5...

> I never tried #3 personally, but my understanding of the link and
> autonegotiation dance is that #3 is not possible.
>
> You may see what appears to be #3 *if* your PHY is strapped to start
> autonegotiation on application of power (typically true) and *if* you don't
> do a software reset on the PHY as part of your power up sequence (see also
> my previous email on this thread).  This really isn't #3, it is...
> 4. Strap the PHY to autonegotiate on application of power and use the
>     results from that rather than resetting the PHY and re-starting
>     auto-negotiation in software.

I'd be fine with that, it's similar to a change we made in Linux,
where we don't reset a PHY that appears to be configured.

It seems to me that, as the timeout for receiving link negotiation
bursts from the link partner is 150ms, that after 150ms, the PHY would
be able to report the link as definitively down, somehow...

Anyway, I'm fine with a 2 second timeout, as long as I've confirmed it
in the spec.

And then I suspect we'll have to change it again when we find someone
who has a PHY that didn't conform to the spec...

Andy

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-06 18:49           ` Andy Fleming
@ 2009-02-06 19:30             ` Jerry Van Baren
  2009-02-10  0:56               ` Andy Fleming
  0 siblings, 1 reply; 23+ messages in thread
From: Jerry Van Baren @ 2009-02-06 19:30 UTC (permalink / raw)
  To: u-boot

Andy Fleming wrote:
> On Fri, Feb 6, 2009 at 7:32 AM, Jerry Van Baren <gerald.vanbaren@ge.com> wrote:
>> Peter Tyser wrote:
> 
>>>> The problem is that you don't always know which interface you have
>>>> hooked up.  So u-boot tries the one set in ethact, and then the next,
>>>> etc.  With the old method, the penalty for being wrong was quite high.
>>>>  I hadn't run into an issue with the link not being up.  Why don't we
>>>> look up the spec, and find out the maximum time we'd have to wait for
>>>> that to happen.  That way we get the best of both worlds.  My sense is
>>>> that the link comes up fast, but autonegotiation potentially takes a
>>>> while.
>> 2 seconds minimum, it is written in the autonegotiation spec.  If you add
>> the spec-required minimum times for each step of the dance, it is 2 seconds.
>>  It could take longer, but I've never seen anything but 2 seconds.
> 
> Could you point me at where in the spec it says this?  I've been
> digging around in it, and found nothing concrete so far.

I've been sweating bullets just *knowing* someone was going to call me 
on this.  Oh man, I am ***SO*** lucky... I had to dig back to October 
2002 to find it, but find it I did.  :-) :-) :-)

My experience is that "The second case assumes that the far end link 
partner fully supports Auto-Negotiation:" / "Min spec" time is what 
occurs.  I've never seen a PHY take anything other than bang-on 2 
seconds (OK, 2.054 seconds).

IIRC, the "min spec" time is the minimum time a PHY is allowed to take 
for autonegotiation.  The "max spec" time is the maximum time the PHY is 
allowed to take for autonegotiation.  The PHY *has* everything it needs 
to know by the "min spec" time, which is why all PHYs (that I've ever 
used) take exactly 2 seconds for autonegotiation.

If you wanted to be safer than my semi-empirical 2 second number, 2.8 
(round up to 3?) seconds is probably a good choice.

Note that the first case mentioned below is oddball in that the far end 
doesn't support autonegotiation.  In real life, you are probably screwed 
in this case regardless of the time it takes for autonegotiation to fail.

I recall verifying the DP83840 calculations against chapter 28 of the 
IEEE 802.3u and I *clearly* recall not wanting to go back there ever 
again.  If you doubt the numbers, *you* can go there.  ;-)

Enjoy,
gvb

------------------------------------------------------------------
Worst case auto-negotiate times per IEEE.
------------------------------------------------------------------

Quote from National Instrument's DP83840A Datasheet:
==================================================================
3.9.6 Auto-Negotiation Complete Time

This section describes the amount of time required to complete an
Auto-Negotiation cycle for the 840A. These times are defined for two cases.

The first case assumes that the far end link partner does not support
Auto-Negotiation and is either a fixed 10M or 100M implementation.

Timer			Min spec	Max spec	DP83840A
-----			--------	--------	--------
Break link		1200ms		1500ms		1300ms
Autoneg wait		 500ms		1000ms		 750ms
Link fail inhibit	 750ms		1000ms		 800ms
------------------------------------------------------------------
Total			1700-2450ms	2500-3500ms	2050-2850ms


The second case assumes that the far end link partner fully
supports Auto-Negotiation:

Timer			Min spec	Max spec	DP83840A
-----			--------	--------	--------
Break link		1200ms		1500ms		1300ms
FLP bursts		 104ms		 312ms		 200ms
Link fail inhibit	 750ms		1000ms		 800ms
------------------------------------------------------------------
Total			1304-2054ms	1812-2812ms	1500-2300ms

Refer to chapter 28 of the IEEE 802.3u standard for a full description 
of  the individual timers related to Auto-Negotiation.
==========================================================================

Notes:
* The minimum time in the "Total" lines is if "Link fail inhibit" is not
necessary.  The maximum is the sum of all three times in the column.

* Assuming "Link fail inhibit" doesn't occur, the "Break link" dominates
the time required.

* Our experience is that the PHYs can be configured to start 
auto-negotiating on application of power.  This allows the 
auto-negotiation to occur in parallel with the processor start up code. 
  This is helpful, but 2 seconds is still a long time.

* The FLP pulse width is 100nSec (10MHz fundamental frequency, probably
square edges).

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-06 19:30             ` Jerry Van Baren
@ 2009-02-10  0:56               ` Andy Fleming
  2009-02-10 13:59                 ` Jerry Van Baren
  0 siblings, 1 reply; 23+ messages in thread
From: Andy Fleming @ 2009-02-10  0:56 UTC (permalink / raw)
  To: u-boot

On Fri, Feb 6, 2009 at 1:30 PM, Jerry Van Baren <gerald.vanbaren@ge.com> wrote:
> Andy Fleming wrote:
>>
>> On Fri, Feb 6, 2009 at 7:32 AM, Jerry Van Baren <gerald.vanbaren@ge.com>
>> wrote:
>>>
>>> Peter Tyser wrote:
>>
>>>>> The problem is that you don't always know which interface you have
>>>>> hooked up.  So u-boot tries the one set in ethact, and then the next,
>>>>> etc.  With the old method, the penalty for being wrong was quite high.
>>>>>  I hadn't run into an issue with the link not being up.  Why don't we
>>>>> look up the spec, and find out the maximum time we'd have to wait for
>>>>> that to happen.  That way we get the best of both worlds.  My sense is
>>>>> that the link comes up fast, but autonegotiation potentially takes a
>>>>> while.
>>>
>>> 2 seconds minimum, it is written in the autonegotiation spec.  If you add
>>> the spec-required minimum times for each step of the dance, it is 2
>>> seconds.
>>>  It could take longer, but I've never seen anything but 2 seconds.
>>
>> Could you point me at where in the spec it says this?  I've been
>> digging around in it, and found nothing concrete so far.
>
> I've been sweating bullets just *knowing* someone was going to call me on
> this.  Oh man, I am ***SO*** lucky... I had to dig back to October 2002 to
> find it, but find it I did.  :-) :-) :-)
>
> My experience is that "The second case assumes that the far end link partner
> fully supports Auto-Negotiation:" / "Min spec" time is what occurs.  I've
> never seen a PHY take anything other than bang-on 2 seconds (OK, 2.054
> seconds).
>
> IIRC, the "min spec" time is the minimum time a PHY is allowed to take for
> autonegotiation.  The "max spec" time is the maximum time the PHY is allowed
> to take for autonegotiation.  The PHY *has* everything it needs to know by
> the "min spec" time, which is why all PHYs (that I've ever used) take
> exactly 2 seconds for autonegotiation.
>
> If you wanted to be safer than my semi-empirical 2 second number, 2.8 (round
> up to 3?) seconds is probably a good choice.


Based on my reading of the below, "safe" is 3.5 seconds.

>
> Note that the first case mentioned below is oddball in that the far end
> doesn't support autonegotiation.  In real life, you are probably screwed in
> this case regardless of the time it takes for autonegotiation to fail.

  If the link partner doesn't support autonegotiation, many PHYs
support "Parallel detection" which allows the PHY to essentially
notice by the link response what speeds seem to be supported.  And,
really, my issue is not with autonegotiation failing, but failing due
to no link actually being present.  If the link isn't there, it's
annoying to wait and wait and wait.

>
> I recall verifying the DP83840 calculations against chapter 28 of the IEEE
> 802.3u and I *clearly* recall not wanting to go back there ever again.  If
> you doubt the numbers, *you* can go there.  ;-)

I'll trust your math.  My curiosity has to do with whether the link
status will be reported as up once the break link time has elapsed.
But 3.5 is still better than what at some point was a much longer
timeout.

Andy

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-10  0:56               ` Andy Fleming
@ 2009-02-10 13:59                 ` Jerry Van Baren
  2009-02-10 17:31                   ` Scott Wood
  0 siblings, 1 reply; 23+ messages in thread
From: Jerry Van Baren @ 2009-02-10 13:59 UTC (permalink / raw)
  To: u-boot

Andy Fleming wrote:
> On Fri, Feb 6, 2009 at 1:30 PM, Jerry Van Baren <gerald.vanbaren@ge.com> wrote:
>> Andy Fleming wrote:
>>> On Fri, Feb 6, 2009 at 7:32 AM, Jerry Van Baren <gerald.vanbaren@ge.com>
>>> wrote:
>>>> Peter Tyser wrote:

[snip]

>> My experience is that "The second case assumes that the far end link partner
>> fully supports Auto-Negotiation:" / "Min spec" time is what occurs.  I've
>> never seen a PHY take anything other than bang-on 2 seconds (OK, 2.054
>> seconds).
>>
>> IIRC, the "min spec" time is the minimum time a PHY is allowed to take for
>> autonegotiation.  The "max spec" time is the maximum time the PHY is allowed
>> to take for autonegotiation.  The PHY *has* everything it needs to know by
>> the "min spec" time, which is why all PHYs (that I've ever used) take
>> exactly 2 seconds for autonegotiation.
>>
>> If you wanted to be safer than my semi-empirical 2 second number, 2.8 (round
>> up to 3?) seconds is probably a good choice.
> 
> Based on my reading of the below, "safe" is 3.5 seconds.
> 
>> Note that the first case mentioned below is oddball in that the far end
>> doesn't support autonegotiation.  In real life, you are probably screwed in
>> this case regardless of the time it takes for autonegotiation to fail.
> 
>   If the link partner doesn't support autonegotiation, many PHYs

s/many/all/

> support "Parallel detection" which allows the PHY to essentially
> notice by the link response what speeds seem to be supported.  And,

(speed, but not duplex)

> really, my issue is not with autonegotiation failing, but failing due
> to no link actually being present.  If the link isn't there, it's
> annoying to wait and wait and wait.

I understand "parallel detection".  The problem is that the percentage 
of times that it results in a properly configured link is (in my 
experience) very very low.  Not because "parallel detection" doesn't 
work, but because the humans configuring the fixed side don't understand 
parallel detection and set it up for full duplex.

Ignoring the configuration where both ends are (presumably correctly) 
manually configured, you end up with five cases, two of them 
misconfigured and WRONG:
1) Autonegotiation <-> autonegotiation - reliable.
2) 10bT half duplex <-> autonegotiation - reliable.
3) 100bT half duplex <-> autonegotiation - reliable.
4) 10bT *FULL* duplex <-> autonegotiation - *UNreliable*.
5) 100bT *FULL* duplex <-> autonegotiation - *UNreliable*.

The problem that I've observed is that the *humans* (the weak links) 
that do the manual configuration don't understand that "parallel 
detection" *must be* half duplex by definition in the spec (it is hard 
to define a reliable algorithm to detect full duplex capability so the 
spec writers punted).  As a result, the human invariably picks "full 
duplex" because everybody knows full duplex is better... and end up as 
case (4) or (5).  They inadvertently end up with a slower unreliable 
link (lots of "collisions" resulting in runt packets) rather than the 
faster better link they thought they were picking (d'oh!).  The really 
bad thing is that the network works fine in testing on an isolated LAN 
with no traffic and absolutely craps its pants when it hits the real world.

That is my reasoning behind my statement that we can generally ignore 
the autonegotiation <-> fixed configuration case because the odds of it 
working properly are poor anyway.

Having said all that, I don't have any problem with using 3.5 seconds as 
the safe timeout value.  it isn't worth timing out too soon just to 
shave 0.5 or even 1.0 seconds off the negotiation timeout time.

>> I recall verifying the DP83840 calculations against chapter 28 of the IEEE
>> 802.3u and I *clearly* recall not wanting to go back there ever again.  If
>> you doubt the numbers, *you* can go there.  ;-)
> 
> I'll trust your math.  My curiosity has to do with whether the link
> status will be reported as up once the break link time has elapsed.
> But 3.5 is still better than what at some point was a much longer
> timeout.
> 
> Andy

Best regards,
gvb

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-10 13:59                 ` Jerry Van Baren
@ 2009-02-10 17:31                   ` Scott Wood
  2009-02-25 20:30                     ` Peter Tyser
  0 siblings, 1 reply; 23+ messages in thread
From: Scott Wood @ 2009-02-10 17:31 UTC (permalink / raw)
  To: u-boot

On Tue, Feb 10, 2009 at 08:59:11AM -0500, Jerry Van Baren wrote:
> That is my reasoning behind my statement that we can generally ignore 
> the autonegotiation <-> fixed configuration case because the odds of it 
> working properly are poor anyway.

I'm not fond of giving up any ability to support a configuration just
because some people get it wrong (including configurations where the
human *can't* screw it up because the fixed end is some old hub or NIC
that doesn't support anything other than 10Mbit, half-duplex), especially
when the benefit of not supporting it is so low.

> Having said all that, I don't have any problem with using 3.5 seconds as 
> the safe timeout value.  it isn't worth timing out too soon just to 
> shave 0.5 or even 1.0 seconds off the negotiation timeout time.

OK, good. :-)

-Scott

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-10 17:31                   ` Scott Wood
@ 2009-02-25 20:30                     ` Peter Tyser
  0 siblings, 0 replies; 23+ messages in thread
From: Peter Tyser @ 2009-02-25 20:30 UTC (permalink / raw)
  To: u-boot

Sorry for the delayed response,

On Tue, 2009-02-10 at 11:31 -0600, Scott Wood wrote:
> On Tue, Feb 10, 2009 at 08:59:11AM -0500, Jerry Van Baren wrote:
> > That is my reasoning behind my statement that we can generally ignore 
> > the autonegotiation <-> fixed configuration case because the odds of it 
> > working properly are poor anyway.
> 
> I'm not fond of giving up any ability to support a configuration just
> because some people get it wrong (including configurations where the
> human *can't* screw it up because the fixed end is some old hub or NIC
> that doesn't support anything other than 10Mbit, half-duplex), especially
> when the benefit of not supporting it is so low.
> 
> > Having said all that, I don't have any problem with using 3.5 seconds as 
> > the safe timeout value.  it isn't worth timing out too soon just to 
> > shave 0.5 or even 1.0 seconds off the negotiation timeout time.
> 
> OK, good. :-)

I agree, I'd prefer to err on the conservative side too.  The spec Jerry
mentioned was for a 100M PHY.  I'm guessing it could take longer for a
1000M PHY...  I've looked around a fair bit and couldn't find anything
concrete either.  I see a few references to a 4.5 second autonegotiation
timeout in the Linux kernel (e1000 and e1000e drivers), but of course no
mention of where those numbers came from.  I see timeout values of 4 and
5 seconds in U-Boot also.

What if I keep this patch as is, then submit an additional patch which
would replace all PHY_AUTONEGOTIATE_TIMEOUT references with
CONFIG_SYS_PHY_AUTONEG_TIMEOUT.  A conservative default value of 4.5
seconds would be assigned to CONFIG_SYS_AUTONEG_TIMEOUT in net.h, but
this could be overridden by board config files if wanted/needed?

Thanks,
Peter

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-04 21:14 [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link Peter Tyser
  2009-02-04 21:20 ` Andy Fleming
@ 2009-07-19 20:14 ` Peter Tyser
  2009-08-04 22:50   ` Peter Tyser
  2009-08-21 17:35 ` Ben Warren
  2 siblings, 1 reply; 23+ messages in thread
From: Peter Tyser @ 2009-07-19 20:14 UTC (permalink / raw)
  To: u-boot

On Wed, 2009-02-04 at 15:14 -0600, Peter Tyser wrote:
> Previously, waiting for auto-negotiation would only occur if a valid
> link had been detected.  Problems arose when attempting to use a
> tsec immediately after bootup but before link was achieved, eg:
> => dhcp
> Auto-neg error, defaulting to 10BT/HD
> eTSEC1: No link.
> Auto-neg error, defaulting to 10BT/HD
> eTSEC2: No link.
> =>
> 
> With this patch applied the same operation as above resulted in:
> => dhcp
> Waiting for PHY auto negotiation to complete. done
> Enet starting in 1000BT/FD
> Speed: 1000, full duplex
> 
> Signed-off-by: Peter Tyser <ptyser@xes-inc.com>

This patch originally spawned a lot of discussion but nothing came of
it.  Could we get it applied?  If not, what do I need to do to get a
similar change in?

Right now if you have autoboot enabled that uses network operation, you
have to add an arbitrary delay to the boot process to give
autonegotiation time to complete, which is annoying.  The negotiation
time varies depending on switch too, so the delay can never be exact.

Thanks,
Peter

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-07-19 20:14 ` Peter Tyser
@ 2009-08-04 22:50   ` Peter Tyser
  2009-08-21 17:04     ` Peter Tyser
  0 siblings, 1 reply; 23+ messages in thread
From: Peter Tyser @ 2009-08-04 22:50 UTC (permalink / raw)
  To: u-boot

On Sun, 2009-07-19 at 15:14 -0500, Peter Tyser wrote:
> On Wed, 2009-02-04 at 15:14 -0600, Peter Tyser wrote:
> > Previously, waiting for auto-negotiation would only occur if a valid
> > link had been detected.  Problems arose when attempting to use a
> > tsec immediately after bootup but before link was achieved, eg:
> > => dhcp
> > Auto-neg error, defaulting to 10BT/HD
> > eTSEC1: No link.
> > Auto-neg error, defaulting to 10BT/HD
> > eTSEC2: No link.
> > =>
> > 
> > With this patch applied the same operation as above resulted in:
> > => dhcp
> > Waiting for PHY auto negotiation to complete. done
> > Enet starting in 1000BT/FD
> > Speed: 1000, full duplex
> > 
> > Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
> 
> This patch originally spawned a lot of discussion but nothing came of
> it.  Could we get it applied?  If not, what do I need to do to get a
> similar change in?
> 
> Right now if you have autoboot enabled that uses network operation, you
> have to add an arbitrary delay to the boot process to give
> autonegotiation time to complete, which is annoying.  The negotiation
> time varies depending on switch too, so the delay can never be exact.

Ping...

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-08-04 22:50   ` Peter Tyser
@ 2009-08-21 17:04     ` Peter Tyser
  0 siblings, 0 replies; 23+ messages in thread
From: Peter Tyser @ 2009-08-21 17:04 UTC (permalink / raw)
  To: u-boot

On Tue, 2009-08-04 at 17:50 -0500, Peter Tyser wrote:
> On Sun, 2009-07-19 at 15:14 -0500, Peter Tyser wrote:
> > On Wed, 2009-02-04 at 15:14 -0600, Peter Tyser wrote:
> > > Previously, waiting for auto-negotiation would only occur if a valid
> > > link had been detected.  Problems arose when attempting to use a
> > > tsec immediately after bootup but before link was achieved, eg:
> > > => dhcp
> > > Auto-neg error, defaulting to 10BT/HD
> > > eTSEC1: No link.
> > > Auto-neg error, defaulting to 10BT/HD
> > > eTSEC2: No link.
> > > =>
> > > 
> > > With this patch applied the same operation as above resulted in:
> > > => dhcp
> > > Waiting for PHY auto negotiation to complete. done
> > > Enet starting in 1000BT/FD
> > > Speed: 1000, full duplex
> > > 
> > > Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
> > 
> > This patch originally spawned a lot of discussion but nothing came of
> > it.  Could we get it applied?  If not, what do I need to do to get a
> > similar change in?
> > 
> > Right now if you have autoboot enabled that uses network operation, you
> > have to add an arbitrary delay to the boot process to give
> > autonegotiation time to complete, which is annoying.  The negotiation
> > time varies depending on switch too, so the delay can never be exact.
> 
> Ping...

Hi Ben,
This is the 3rd or 4th time this type of patch has been brought up with
no major objections that I'm aware of.  Can we apply it?  Or if someone
has an objection, can they let me know?

Thanks,
Peter

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

* [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link
  2009-02-04 21:14 [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link Peter Tyser
  2009-02-04 21:20 ` Andy Fleming
  2009-07-19 20:14 ` Peter Tyser
@ 2009-08-21 17:35 ` Ben Warren
  2 siblings, 0 replies; 23+ messages in thread
From: Ben Warren @ 2009-08-21 17:35 UTC (permalink / raw)
  To: u-boot

Peter Tyser wrote:
> Previously, waiting for auto-negotiation would only occur if a valid
> link had been detected.  Problems arose when attempting to use a
> tsec immediately after bootup but before link was achieved, eg:
> => dhcp
> Auto-neg error, defaulting to 10BT/HD
> eTSEC1: No link.
> Auto-neg error, defaulting to 10BT/HD
> eTSEC2: No link.
> =>
>
> With this patch applied the same operation as above resulted in:
> => dhcp
> Waiting for PHY auto negotiation to complete. done
> Enet starting in 1000BT/FD
> Speed: 1000, full duplex
>
> Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
> ---
>   
Applied to net repo.

thanks,
Ben

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

end of thread, other threads:[~2009-08-21 17:35 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-02-04 21:14 [U-Boot] [PATCH] tsec: Wait for auto-negotiation to complete without link Peter Tyser
2009-02-04 21:20 ` Andy Fleming
2009-02-04 21:26   ` Wolfgang Denk
2009-02-04 21:45     ` Peter Tyser
2009-02-04 23:07     ` Andy Fleming
2009-02-05 16:27       ` Peter Tyser
2009-02-06 13:32         ` Jerry Van Baren
2009-02-06 18:49           ` Andy Fleming
2009-02-06 19:30             ` Jerry Van Baren
2009-02-10  0:56               ` Andy Fleming
2009-02-10 13:59                 ` Jerry Van Baren
2009-02-10 17:31                   ` Scott Wood
2009-02-25 20:30                     ` Peter Tyser
2009-02-04 21:49   ` Scott Wood
2009-02-04 21:58     ` Wolfgang Denk
2009-02-04 22:00       ` Scott Wood
2009-02-04 22:19         ` Wolfgang Denk
2009-02-06 13:16       ` Jerry Van Baren
2009-02-06 17:16         ` Ben Warren
2009-07-19 20:14 ` Peter Tyser
2009-08-04 22:50   ` Peter Tyser
2009-08-21 17:04     ` Peter Tyser
2009-08-21 17:35 ` Ben Warren

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox