net/smsc911x: Check if PHY is in operational mode before software reset
authorJavier Martinez Canillas <javier@dowhile0.org>
Tue, 3 Jan 2012 13:36:19 +0000 (13:36 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 4 Jan 2012 01:24:15 +0000 (20:24 -0500)
commit6386994e03ebbe60338ded3d586308a41e81c0dc
tree2fe7a1f71b5ae587b3203180a865bacb25089e51
parent43c6759e73907e4c8e6624f70f5c4a860518b203
net/smsc911x: Check if PHY is in operational mode before software reset

SMSC LAN generation 4 chips integrate an IEEE 802.3 ethernet physical layer.
The PHY driver for this integrated chip enable an energy detect power-down mode.
When the PHY is in a power-down mode, it prevents the MAC portion chip to be
software reseted.

That means that if we compile the kernel with the configuration option SMSC_PHY
enabled and try to bring the network interface up without an cable plug-ed the
PHY will be in a low power mode and the software reset will fail returning -EIO
to user-space:

root@igep00x0:~# ifconfig eth0 up
ifconfig: SIOCSIFFLAGS: Input/output error

This patch disable the energy detect power-down mode before trying to software
reset the LAN chip and re-enables after it was reseted successfully.

Signed-off-by: Javier Martinez Canillas <javier@dowhile0.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/smsc/smsc911x.c