linux/drivers/net/phy
Tim Beale c15e10e71c net: phy: Make sure phy_start() always re-enables the phy interrupts
This is an alternative way of fixing:
 commit db9683fb41 ("net: phy: Make sure PHY_RESUMING state change
                      is always processed")

When the PHY state transitions from PHY_HALTED to PHY_RESUMING, there are
two things we need to do:
1). Re-enable interrupts (and power up the physical link, if powered down)
2). Update the PHY state and net-device based on the link status.

There's no strict reason why #1 has to be done from within the main
phy_state_machine() function. There is a risk that other changes to the
PHY (e.g. setting speed/duplex, which calls phy_start_aneg()) could cause
a subsequent state transition before phy_state_machine() has processed
the PHY_RESUMING state change. This would leave the PHY with interrupts
disabled and/or still in the BMCR_PDOWN/low-power mode.

Moving enabling the interrupts and phy_resume() into phy_start() will
guarantee this work always gets done. As the PHY is already in the HALTED
state and interrupts are disabled, it shouldn't conflict with any work
being done in phy_state_machine(). The downside of this change is that if
the PHY_RESUMING state is ever entered from anywhere else, it'll also have
to repeat this work.

Signed-off-by: Tim Beale <tim.beale@alliedtelesis.co.nz>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-05-20 12:22:08 -04:00
..
amd-xgbe-phy.c amd-xgbe-phy: Provide support for auto-negotiation timeout 2015-03-20 16:33:56 -04:00
amd.c net: phy: replace phy_driver_register calls 2014-11-12 13:52:53 -05:00
at803x.c net: phy: at803x: simplify using devm_gpiod_get_optional and its 4th argument 2015-04-01 12:44:04 -04:00
bcm7xxx.c net: phy: bcm7xxx: add alternate id for 7439 2015-03-09 23:57:54 -04:00
bcm63xx.c net: phy: replace phy_drivers_register calls 2014-11-12 13:52:53 -05:00
bcm87xx.c net: phy: replace phy_drivers_register calls 2014-11-12 13:52:53 -05:00
broadcom.c net: phy: broadcom: Add BCM54616S phy entry 2015-04-08 15:28:13 -04:00
cicada.c net: phy: replace phy_drivers_register calls 2014-11-12 13:52:53 -05:00
davicom.c net: phy: replace phy_drivers_register calls 2014-11-12 13:52:53 -05:00
dp83640_reg.h
dp83640.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2015-04-15 09:00:47 -07:00
et1011c.c net: phy: replace phy_driver_register calls 2014-11-12 13:52:53 -05:00
fixed_phy.c add fixed_phy_update_state() - update state of fixed_phy 2015-04-03 15:08:20 -04:00
icplus.c net: phy: replace phy_drivers_register calls 2014-11-12 13:52:53 -05:00
Kconfig net: amd-xgbe: Add hardware dependency 2015-05-09 16:24:15 -04:00
lxt.c net: phy: replace phy_drivers_register calls 2014-11-12 13:52:53 -05:00
Makefile net: Allow FIXED_PHY to be modular. 2014-12-16 15:02:23 -05:00
marvell.c net: phy: replace phy_drivers_register calls 2014-11-12 13:52:53 -05:00
mdio_bus.c net: phy: avoid suspending twice a PHY 2015-01-27 00:16:51 -08:00
mdio-bcm-unimac.c net: phy: constify of_device_id array 2015-03-17 15:00:23 -04:00
mdio-bitbang.c Revert "drivers/net/phy/mdio-bitbang.c: Call mdiobus_unregister before mdiobus_free" 2012-11-14 22:32:15 -05:00
mdio-gpio.c net: mdio-gpio: Allow for unspecified bus id 2015-05-10 19:42:11 -04:00
mdio-moxart.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
mdio-mux-gpio.c mdio-mux-gpio: use new gpiod_get_array and gpiod_put_array functions 2015-04-27 13:35:40 -04:00
mdio-mux-mmioreg.c net: phy: constify of_device_id array 2015-03-17 15:00:23 -04:00
mdio-mux.c netdev/phy: skip disabled mdio-mux nodes 2012-08-20 02:16:00 -07:00
mdio-octeon.c net: phy: constify of_device_id array 2015-03-17 15:00:23 -04:00
mdio-sun4i.c net: sun4i: remove empty MDIO bus reset function 2014-03-28 01:38:02 -04:00
micrel.c net: phy: micrel: Fix regression in kszphy_probe 2015-05-12 23:18:40 -04:00
national.c net: phy: replace phy_driver_register calls 2014-11-12 13:52:53 -05:00
phy_device.c net: phy: keep track of the PHY suspend state 2015-01-27 00:16:51 -08:00
phy.c net: phy: Make sure phy_start() always re-enables the phy interrupts 2015-05-20 12:22:08 -04:00
qsemi.c net: phy: replace phy_driver_register calls 2014-11-12 13:52:53 -05:00
realtek.c net: phy: replace phy_drivers_register calls 2014-11-12 13:52:53 -05:00
smsc.c net: phy: replace phy_drivers_register calls 2014-11-12 13:52:53 -05:00
spi_ks8995.c net: phy: spi_ks8995: remove sysfs bin file by registered attribute 2014-11-04 17:18:45 -05:00
ste10Xp.c net: phy: replace phy_drivers_register calls 2014-11-12 13:52:53 -05:00
vitesse.c net: phy: replace phy_drivers_register calls 2014-11-12 13:52:53 -05:00