linux/drivers/net/phy
Andrew Lunn 3c293f4e08 net: phy: Trigger state machine on state change and not polling.
The phy_start() is used to indicate the PHY is now ready to do its
work. The state is changed, normally to PHY_UP which means that both
the MAC and the PHY are ready.

If the phy driver is using polling, when the next poll happens, the
state machine notices the PHY is now in PHY_UP, and kicks off
auto-negotiation, if needed.

If however, the PHY is using interrupts, there is no polling. The phy
is stuck in PHY_UP until the next interrupt comes along. And there is
no reason for the PHY to interrupt.

Have phy_start() schedule the state machine to run, which both speeds
up the polling use case, and makes the interrupt use case actually
work.

This problems exists whenever there is a state change which will not
cause an interrupt. Trigger the state machine in these cases,
e.g. phy_error().

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Cc: Kyle Roeschley <kyle.roeschley@ni.com>
Tested-by: Kyle Roeschley <kyle.roeschley@ni.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-10-13 12:03:47 -04:00
..
amd.c phy: Centralize setting driver module owner 2016-01-07 14:31:27 -05:00
aquantia.c phy: Centralize setting driver module owner 2016-01-07 14:31:27 -05:00
at803x.c net: phy: at803x: only the AT8030 needs a hardware reset on link change 2016-04-28 16:48:21 -04:00
bcm7xxx.c net: phy: bcm7xxx: Add entries for Broadcom BCM7346 and BCM7362 2016-03-25 11:37:57 -04:00
bcm63xx.c phy: Centralize setting driver module owner 2016-01-07 14:31:27 -05:00
bcm87xx.c phy: Centralize setting driver module owner 2016-01-07 14:31:27 -05:00
bcm-cygnus.c net: phy: Broadcom Cygnus internal Etherent PHY driver 2015-10-08 04:45:52 -07:00
bcm-phy-lib.c phy: phy_{read|write}_mmd_indirect: get addr from phydev 2016-01-07 14:31:25 -05:00
bcm-phy-lib.h net: phy: Add Broadcom phy library for common interfaces 2015-10-08 04:45:46 -07:00
broadcom.c phy: Centralize setting driver module owner 2016-01-07 14:31:27 -05:00
cicada.c phy: Centralize setting driver module owner 2016-01-07 14:31:27 -05:00
davicom.c phy: Centralize setting driver module owner 2016-01-07 14:31:27 -05:00
dp83640_reg.h
dp83640.c net: dp83640: Fix tx timestamp overflow handling. 2016-01-20 18:54:08 -08:00
dp83848.c net: phy: dp83848: Fix sysfs naming collision warning 2016-02-18 15:53:10 -05:00
dp83867.c net: phy: dp83867: Fix initialization of PHYCR register 2016-07-02 14:48:58 -04:00
et1011c.c phy: Centralize setting driver module owner 2016-01-07 14:31:27 -05:00
fixed_phy.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-06-30 05:03:36 -04:00
icplus.c phy: Centralize setting driver module owner 2016-01-07 14:31:27 -05:00
intel-xway.c NET: PHY: adds driver for Intel XWAY PHY 2016-06-10 22:13:48 -07:00
Kconfig drivers: net: phy: Correct duplicate MDIO_XGENE entry 2016-10-06 21:15:42 -04:00
lxt.c lxt: simplify lxt970_config_init() 2016-05-16 13:53:20 -04:00
Makefile net: phy: Sort Makefile and Kconfig 2016-08-19 17:11:50 -07:00
marvell.c Marvell phy: add functions to suspend and resume both interfaces: fiber and copper links. 2016-07-19 16:05:56 -07:00
mdio_bus.c mdio_bus: don't return NULL from mdiobus_scan() 2016-05-04 16:14:19 -04:00
mdio_device.c mdio: Abstract device_remove() and device_free() 2016-01-07 14:31:27 -05:00
mdio-bcm-iproc.c net: phy: Broadcom iProc MDIO bus driver 2015-10-08 04:44:46 -07:00
mdio-bcm-unimac.c mdio: Move allocation of interrupts into core 2016-01-07 14:31:26 -05:00
mdio-bitbang.c net: phy: mdio-gpio: Handle phy_ignore_ta_mask 2015-05-14 13:40:55 -04:00
mdio-cavium.c phy: mdio-cavium: Add missing MODULE_* annotations. 2016-03-16 19:55:37 -04:00
mdio-cavium.h phy: mdio-octeon: Refactor into two files/modules 2016-03-14 15:27:22 -04:00
mdio-gpio.c mdio: Move allocation of interrupts into core 2016-01-07 14:31:26 -05:00
mdio-hisi-femac.c net: Add MDIO bus driver for the Hisilicon FEMAC 2016-07-16 21:32:58 -07:00
mdio-moxart.c mdio: Move allocation of interrupts into core 2016-01-07 14:31:26 -05:00
mdio-mux-bcm-iproc.c net: mdio-mux: Add MDIO mux driver for iProc SoCs 2016-06-10 23:24:54 -07:00
mdio-mux-gpio.c mdio: mux: Enhanced MDIO mux framework for integrated multiplexers 2016-06-10 23:24:53 -07:00
mdio-mux-mmioreg.c mdio: mux: Enhanced MDIO mux framework for integrated multiplexers 2016-06-10 23:24:53 -07:00
mdio-mux.c mdio: mux: avoid 'maybe-uninitialized' warning 2016-06-15 20:48:52 -07:00
mdio-octeon.c phy: mdio-octeon: Refactor into two files/modules 2016-03-14 15:27:22 -04:00
mdio-sun4i.c mdio-sun4i: oops in error handling in probe 2016-03-21 11:30:01 -04:00
mdio-thunder.c phy: mdio-thunder: Add driver for Cavium Thunder SoC MDIO buses. 2016-03-14 15:27:22 -04:00
mdio-xgene.c drivers: net: phy: xgene: Fix 'remove' function 2016-09-13 12:04:11 -04:00
mdio-xgene.h drivers: net: phy: xgene: Add MDIO driver 2016-07-25 21:51:43 -07:00
micrel.c phy: micrel.c: Enable ksz9031 energy-detect power-down mode 2016-10-05 21:19:06 -04:00
microchip.c phy: mark lan88xx_suspend() static 2016-09-19 21:52:10 -04:00
mscc.c net: phy: Add Wake-on-LAN driver for Microsemi PHYs. 2016-10-06 20:48:04 -04:00
national.c phy: Centralize setting driver module owner 2016-01-07 14:31:27 -05:00
phy_device.c Revert "phy: add support for a reset-gpio specification" 2016-05-20 17:56:59 -04:00
phy.c net: phy: Trigger state machine on state change and not polling. 2016-10-13 12:03:47 -04:00
qsemi.c phy: Centralize setting driver module owner 2016-01-07 14:31:27 -05:00
realtek.c phy: Centralize setting driver module owner 2016-01-07 14:31:27 -05:00
smsc.c net: phy: smsc: reintroduced unconditional soft reset 2016-06-10 22:14:58 -07:00
spi_ks8995.c net: phy: spi_ks8895: Don't leak references to SPI devices 2016-04-21 15:00:27 -04:00
ste10Xp.c phy: Centralize setting driver module owner 2016-01-07 14:31:27 -05:00
swphy.c phy: generate swphy registers on the fly 2016-06-27 10:40:57 -04:00
swphy.h phy: generate swphy registers on the fly 2016-06-27 10:40:57 -04:00
teranetics.c phy: Centralize setting driver module owner 2016-01-07 14:31:27 -05:00
vitesse.c phy: Centralize setting driver module owner 2016-01-07 14:31:27 -05:00
xilinx_gmii2rgmii.c net: phy: xgmiitorgmii: Fix non static symbol warning 2016-08-23 17:17:48 -07:00