realtek: mdio: prevent WARN_ONCE() during bus scan
authorMarkus Stockhausen <markus.stockhausen@gmx.de>
Tue, 10 Feb 2026 18:49:44 +0000 (19:49 +0100)
committerRobert Marko <robimarko@gmail.com>
Fri, 13 Feb 2026 11:53:46 +0000 (12:53 +0100)
The mdio bus detection will be changed from DTS based detection to
autoscan. To avoid spurious WARN_ONCE() messages return -EIO for
reads to register 2 during C22 scan when phy is on a c45 based bus.
The C45 rescan afterwards will detect the phy normally.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21968
Signed-off-by: Robert Marko <robimarko@gmail.com>
target/linux/realtek/files-6.12/drivers/net/mdio/mdio-realtek-otto.c

index 2387b91994ec50ff4065f65a66e7e768f663854a..e846c00b605e06a926bc773d980863506e11d9df 100644 (file)
@@ -504,6 +504,10 @@ static int rtmdio_read(struct mii_bus *bus, int addr, int regnum)
        if (addr >= ctrl->cfg->cpu_port)
                return -ENODEV;
 
+       /* prevent WARN_ONCE() during scan */
+       if (ctrl->smi_bus[addr] >=0 && ctrl->smi_bus_isc45[ctrl->smi_bus[addr]] && regnum == 2)
+               return -EIO;
+
        if (regnum == RTMDIO_PAGE_SELECT && ctrl->page[addr] != ctrl->cfg->raw_page)
                return ctrl->page[addr];