summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorAndrew Lunn <andrew@lunn.ch>2016-10-12 22:14:53 +0200
committerDavid S. Miller <davem@davemloft.net>2016-10-13 12:03:47 -0400
commit3c293f4e08b58ad5b78f78d89ca1fd41f87f8729 (patch)
tree8bc84d37da7078197afe2e0fe8baab8e78f1373e /include
parent8ce48623f0cf3d632e32448411feddccb693d351 (diff)
downloadlinux-3c293f4e08b58ad5b78f78d89ca1fd41f87f8729.tar.bz2
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>
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions