smsc911x: power-up phydev before doing a software reset.
authorEnric Balletbo i Serra <eballetbo@iseebcn.com>
Thu, 13 Nov 2014 08:14:34 +0000 (09:14 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 21 Nov 2014 17:23:00 +0000 (09:23 -0800)
commitfa4f20e262fec43854d6bec0a6673829febbce1a
treefacd4d8dc2dc28fdf3297d813bf3d53ed65f1d61
parentf58ee885658bd83f6580751a2b8a8e3ad6cd6665
smsc911x: power-up phydev before doing a software reset.

[ Upstream commit ccf899a27c08038db91765ff12bb0380dcd85887 ]

With commit be9dad1f9f26604fb ("net: phy: suspend phydev when going
to HALTED"), the PHY device will be put in a low-power mode using
BMCR_PDOWN if the the interface is set down. The smsc911x driver does
a software_reset opening the device driver (ndo_open). In such case,
the PHY must be powered-up before access to any register and before
calling the software_reset function. Otherwise, as the PHY is powered
down the software reset fails and the interface can not be enabled
again.

This patch fixes this scenario that is easy to reproduce setting down
the network interface and setting up again.

    $ ifconfig eth0 down
    $ ifconfig eth0 up
    ifconfig: SIOCSIFFLAGS: Input/output error

Signed-off-by: Enric Balletbo i Serra <eballetbo@iseebcn.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/smsc/smsc911x.c