realtek: sfp: prevent duplicate hwmon devices when re-probing on interface up
authorBjørn Mork <bjorn@mork.no>
Tue, 4 Feb 2025 08:05:40 +0000 (09:05 +0100)
committerSander Vanheule <sander@svanheule.net>
Tue, 25 Feb 2025 19:53:30 +0000 (20:53 +0100)
Re-probing on interface up will register a new duplicate hwmon device. Skip
the hwmon probe if we already have a sensor device.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/17950
Signed-off-by: Sander Vanheule <sander@svanheule.net>
target/linux/realtek/patches-6.6/710-net-phy-sfp-re-probe-modules-on-DEV_UP-event.patch

index 4e1a21aa7150173ca9a9915b59ca9ac80948081e..26216691e4cc7af6e5297e67fe803401b75a5d8f 100644 (file)
@@ -10,7 +10,18 @@ Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
 
 --- a/drivers/net/phy/sfp.c
 +++ b/drivers/net/phy/sfp.c
-@@ -2416,6 +2416,13 @@ static void sfp_sm_module(struct sfp *sf
+@@ -1557,6 +1557,10 @@ static void sfp_hwmon_probe(struct work_
+       struct sfp *sfp = container_of(work, struct sfp, hwmon_probe.work);
+       int err;
++      /* Avoid duplicate hwmon devices when re-probing */
++      if (sfp->hwmon_dev)
++              return;
++
+       /* hwmon interface needs to access 16bit registers in atomic way to
+        * guarantee coherency of the diagnostic monitoring data. If it is not
+        * possible to guarantee coherency because EEPROM is broken in such way
+@@ -2416,6 +2420,13 @@ static void sfp_sm_module(struct sfp *sf
                return;
        }