It is not the bug. It is that the author did not understand how the device EDPD works.SMSC contacted the developer who put this comment in and explained how the device functions.
Since the device expects 2 NLPs in 64ms apart, many devices do not do this hence the device cannot wake from EDPD.
==============================================================================
Below is an explanation of how their Energy Detect and Power Down works:
ENERGYON algorithm: There are two state machines involved.
The signal valid generation is as below:
1. If a NLP is detected and then starts a 64ms timer.
2. Checks for pulse going low and waits 2us.
3. If a second pulse is detected before the 64ms timer completes, a valid signal is determined and ENERGYON goes high (taking out of Energy Detect Power Down).
4. If no second pulse is detected before the 64ms timer completes, keep ENERGYON low and go back to step 1.
If auto-neg on:
When auto-neg state machine enters detection state, a 256ms timer starts. If timer expires ENERGYON goes low.
If auto-neg transitions to another state before 256ms timer is aborted and ENERGYON remains high. Also, when signal valid is high, ENERGYON goes high.
If auto-neg is off:
If the link is not ON for a duration of 256ms the ENERYON goes low. When signal valid goes high, ENERGYON goes high.
Some of the switches/network cards may not send the NLP 64ms apart. We did see some cards send 256ms and even some send 1 sec apart. With such partner card our device may not wake from EDPD."
-Andrew
--
On Fri, 26 Oct 2012 08:08:01 -0700That's interesting. Are you able to reproduce this issue of not
Stan Hu <sta...@gmail.com> wrote:
> Wow, that's wacky. I actually haven't observed this particular
> phenomenon, but I have noticed that the SMSC 8710 doesn't always
> detect network activity after plugging in a network cable. More
> specifically, the LEDs don't light up, and no link is detected.
> There is a patch in the mainline Linux kernel that cures this problem
> by disabling the FlexPWR feature:
>
> http://permalink.gmane.org/gmane.linux.network/244262
>
> When this problem occurs, a warm software reboot (e.g. 'reboot')
> doesn't break the SMSC 8710 out of this state. Neither U-boot nor
> the Linux driver issues a software reset to the PHY. I did
> experiment by adding a software reset to the SMSC 8710 in the Linux
> driver, and this seemed to kick the PHY out of the state.
getting link from u-boot? Taking Linux out of the equation?
The 8710 data sheet says the default state for the EDPWRDOWN register
bit is 0, with this ability to perform Energy Detect Power-Down
disabled. Who is changing that register setting in your case?
- Grant--