mirror of https://github.com/hak5/openwrt.git
kernel: sfp: add two fixes submitted to upstream
Add two small fixes for SFP that were submitted upstream. Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>master
parent
46678fbdca
commit
10b12b5d68
|
@ -0,0 +1,28 @@
|
|||
From 729fd05aac22cdf1e502fbf1bf80e5ebba0d9fbc Mon Sep 17 00:00:00 2001
|
||||
From: Russell King <rmk+kernel@armlinux.org.uk>
|
||||
Date: Tue, 3 Dec 2019 17:48:28 +0000
|
||||
Subject: [PATCH] net: sfp: fix unbind
|
||||
|
||||
When unbinding, we don't correctly tear down the module state, leaving
|
||||
(for example) the hwmon registration behind. Ensure everything is
|
||||
properly removed by sending a remove event at unbind.
|
||||
|
||||
Fixes: 6b0da5c9c1a3 ("net: sfp: track upstream's attachment state in state machine")
|
||||
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||
---
|
||||
drivers/net/phy/sfp.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
--- a/drivers/net/phy/sfp.c
|
||||
+++ b/drivers/net/phy/sfp.c
|
||||
@@ -2242,6 +2242,10 @@ static int sfp_remove(struct platform_de
|
||||
|
||||
sfp_unregister_socket(sfp->sfp_bus);
|
||||
|
||||
+ rtnl_lock();
|
||||
+ sfp_sm_event(sfp, SFP_E_REMOVE);
|
||||
+ rtnl_unlock();
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
From 5eb0df5023c6ae8a71a7848fd5e1f788d86e51ae Mon Sep 17 00:00:00 2001
|
||||
From: Russell King <rmk+kernel@armlinux.org.uk>
|
||||
Date: Tue, 3 Dec 2019 18:46:04 +0000
|
||||
Subject: [PATCH] net: sfp: fix hwmon
|
||||
|
||||
The referenced commit below allowed more than one hwmon device to be
|
||||
created per SFP, which is definitely not what we want. Avoid this by
|
||||
only creating the hwmon device just as we transition to WAITDEV state.
|
||||
|
||||
Fixes: 139d3a212a1f ("net: sfp: allow modules with slow diagnostics to probe")
|
||||
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||
---
|
||||
drivers/net/phy/sfp.c | 13 ++++---------
|
||||
1 file changed, 4 insertions(+), 9 deletions(-)
|
||||
|
||||
--- a/drivers/net/phy/sfp.c
|
||||
+++ b/drivers/net/phy/sfp.c
|
||||
@@ -1714,6 +1714,10 @@ static void sfp_sm_module(struct sfp *sf
|
||||
break;
|
||||
}
|
||||
|
||||
+ err = sfp_hwmon_insert(sfp);
|
||||
+ if (err)
|
||||
+ dev_warn(sfp->dev, "hwmon probe failed: %d\n", err);
|
||||
+
|
||||
sfp_sm_mod_next(sfp, SFP_MOD_WAITDEV, 0);
|
||||
/* fall through */
|
||||
case SFP_MOD_WAITDEV:
|
||||
@@ -1763,15 +1767,6 @@ static void sfp_sm_module(struct sfp *sf
|
||||
case SFP_MOD_ERROR:
|
||||
break;
|
||||
}
|
||||
-
|
||||
-#if IS_ENABLED(CONFIG_HWMON)
|
||||
- if (sfp->sm_mod_state >= SFP_MOD_WAITDEV &&
|
||||
- IS_ERR_OR_NULL(sfp->hwmon_dev)) {
|
||||
- err = sfp_hwmon_insert(sfp);
|
||||
- if (err)
|
||||
- dev_warn(sfp->dev, "hwmon probe failed: %d\n", err);
|
||||
- }
|
||||
-#endif
|
||||
}
|
||||
|
||||
static void sfp_sm_main(struct sfp *sfp, unsigned int event)
|
Loading…
Reference in New Issue