From: Sander Vanheule Date: Thu, 16 Jan 2025 12:23:54 +0000 (+0100) Subject: realtek: Use atomic poll for aux-mdio commands X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=693c1ea81a314cfa37a60a293568d2e46282b717;p=openwrt%2Fstaging%2Fblocktrron.git realtek: Use atomic poll for aux-mdio commands regmap_read_poll_timeout() relies on usleep_range() to time the polling loop. With the current, rather large, scheduling interval, a short usleep_range() may take a lot longer than expected, causing performance issues. Switch the driver over to using regmap_read_poll_timeout_atomic(), which uses udelay() to time the polling loop. For comparision, the 'ethtool -m ' command is about 10 times faster with the atomic variant. Using 'perf -r10 ethtool -m lan25': - Driver using regmap_read_poll_timeout(): 2.0117 +- 0.0118 seconds time elapsed ( +- 0.58% ) - Driver using regmap_read_poll_timeout_atomic(): 0.1674 +- 0.0250 seconds time elapsed ( +- 14.95% ) Signed-off-by: Sander Vanheule --- diff --git a/target/linux/realtek/patches-6.6/723-net-mdio-Add-Realtek-Otto-auxiliary-controller.patch b/target/linux/realtek/patches-6.6/723-net-mdio-Add-Realtek-Otto-auxiliary-controller.patch index 430f8f5c00..a58cc496ef 100644 --- a/target/linux/realtek/patches-6.6/723-net-mdio-Add-Realtek-Otto-auxiliary-controller.patch +++ b/target/linux/realtek/patches-6.6/723-net-mdio-Add-Realtek-Otto-auxiliary-controller.patch @@ -103,7 +103,7 @@ Signed-off-by: Sander Vanheule + if (err) + return err; + -+ err = regmap_read_poll_timeout(ctrl->map, ctrl->cmd_reg, run, (run != cmd), 3, 100); ++ err = regmap_read_poll_timeout_atomic(ctrl->map, ctrl->cmd_reg, run, (run != cmd), 3, 100); + + if ((run & ~mask_volatile) != (cmd & ~mask_volatile)) { + dev_err(ctrl->dev, "Command modified. Is offloading still active?");