mirror of
https://github.com/openwrt/openwrt.git
synced 2025-02-20 17:32:57 +00:00
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
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 <dev>' 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 <sander@svanheule.net>