lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 20 Mar 2020 21:34:27 +0800 From: Dejin Zheng <zhengdejin5@...il.com> To: andrew@...n.ch, f.fainelli@...il.com, hkallweit1@...il.com, linux@...linux.org.uk, davem@...emloft.net, allison@...utok.net, corbet@....net, alexios.zavras@...el.com, broonie@...nel.org, tglx@...utronix.de, mchehab+samsung@...nel.org, netdev@...r.kernel.org Cc: linux-kernel@...r.kernel.org, Dejin Zheng <zhengdejin5@...il.com> Subject: [PATCH net-next v2 3/7] net: phy: introduce phy_read_mmd_poll_timeout macro it is sometimes necessary to poll a phy register by phy_read_mmd() function until its value satisfies some condition. introduce phy_read_mmd_poll_timeout() macros that do this. Suggested-by: Andrew Lunn <andrew@...n.ch> Signed-off-by: Dejin Zheng <zhengdejin5@...il.com> --- v1 -> v2: - passed a phydev, device address and a reg to replace args... parameter in phy_read_mmd_poll_timeout() by Andrew Lunn 's suggestion. Andrew Lunn <andrew@...n.ch>, Thanks very much for your help! - handle phy_read_mmd return an error(the return value < 0) in phy_read_mmd_poll_timeout(). Thanks Andrew again. include/linux/phy.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/include/linux/phy.h b/include/linux/phy.h index 36d9dea04016..bb351f8b8769 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -24,6 +24,7 @@ #include <linux/mod_devicetable.h> #include <linux/u64_stats_sync.h> #include <linux/irqreturn.h> +#include <linux/iopoll.h> #include <linux/atomic.h> @@ -784,6 +785,19 @@ static inline int __phy_modify_changed(struct phy_device *phydev, u32 regnum, */ int phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum); +#define phy_read_mmd_poll_timeout(val, cond, sleep_us, timeout_us, \ + phydev, devad, regnum) \ +({ \ + int ret = 0; \ + ret = read_poll_timeout(phy_read_mmd, val, cond || val < 0, sleep_us, \ + timeout_us, phydev, devad, regnum); \ + if (val < 0) \ + ret = val; \ + if (ret) \ + phydev_err(phydev, "%s failed: %d\n", __func__, ret); \ + ret; \ +}) + /** * __phy_read_mmd - Convenience function for reading a register * from an MMD on a given PHY. -- 2.25.0
Powered by blists - more mailing lists