summaryrefslogtreecommitdiff
path: root/drivers/net
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@armlinux.org.uk>2019-11-05 10:34:39 +0000
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>2024-05-07 10:49:46 +0100
commita2593271385ea2420057ca54b2d917d854ce0c0d (patch)
tree7d2e0d8d6a0fd8df318ea3399790a4b7ea1a5de7 /drivers/net
parent860474ecaef7eddb84b011195f12533f155446fe (diff)
net: phy: make phy_error() report which PHY has failed
phy_error() is called from phy_interrupt() or phy_state_machine(), and uses WARN_ON() to print a backtrace. The backtrace is not useful when reporting a PHY error. However, a system may contain multiple ethernet PHYs, and phy_error() gives no clue which one caused the problem. Replace WARN_ON() with a call to phydev_err() so that we can see which PHY had an error, and also inform the user that we are halting the PHY. Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/phy/phy.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index 2f77ab180db1..ae1916861986 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -1260,6 +1260,8 @@ void phy_stop_machine(struct phy_device *phydev)
static void phy_process_error(struct phy_device *phydev)
{
+ phydev_err(phydev, "Error detected, halting PHY\n");
+
/* phydev->lock must be held for the state change to be safe */
if (!mutex_is_locked(&phydev->lock))
phydev_err(phydev, "PHY-device data unsafe context\n");
@@ -1286,7 +1288,6 @@ static void phy_error_precise(struct phy_device *phydev,
*/
void phy_error(struct phy_device *phydev)
{
- WARN_ON(1);
phy_process_error(phydev);
}
EXPORT_SYMBOL(phy_error);