* [PATCH net-next v2 0/7] introduce read_poll_timeout
@ 2020-03-20 13:34 Dejin Zheng
2020-03-20 13:34 ` [PATCH net-next v2 1/7] iopoll: introduce read_poll_timeout macro Dejin Zheng
` (7 more replies)
0 siblings, 8 replies; 11+ messages in thread
From: Dejin Zheng @ 2020-03-20 13:34 UTC (permalink / raw)
To: andrew, f.fainelli, hkallweit1, linux, davem, allison, corbet,
alexios.zavras, broonie, tglx, mchehab+samsung, netdev
Cc: linux-kernel, Dejin Zheng
This patch sets is introduce read_poll_timeout macro, it is an extension
of readx_poll_timeout macro. the accessor function op just supports only
one parameter in the readx_poll_timeout macro, but this macro can
supports multiple variable parameters for it. so functions like
phy_read(struct phy_device *phydev, u32 regnum) and
phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum) can
use this poll timeout framework.
the first patch introduce read_poll_timeout macro, and the second patch
redefined readx_poll_timeout macro by read_poll_timeout(), and the other
patches are examples using read_poll_timeout macro.
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 in patch 3. Andrew Lunn <andrew@lunn.ch>, Thanks
very much for your help!
- also in patch 3, handle phy_read_mmd return an error(the return
value < 0) in phy_read_mmd_poll_timeout(). Thanks Andrew
again.
- in patch 6, pass a phydev and a reg to replace args...
parameter in phy_read_poll_timeout(), and also handle the
phy_read() function's return error.
Dejin Zheng (7):
iopoll: introduce read_poll_timeout macro
iopoll: redefined readx_poll_timeout macro to simplify the code
net: phy: introduce phy_read_mmd_poll_timeout macro
net: phy: bcm84881: use phy_read_mmd_poll_timeout() to simplify the
code
net: phy: aquantia: use phy_read_mmd_poll_timeout() to simplify the
code
net: phy: introduce phy_read_poll_timeout macro
net: phy: use phy_read_poll_timeout() to simplify the code
drivers/net/phy/aquantia_main.c | 13 ++++--------
drivers/net/phy/bcm84881.c | 27 ++++---------------------
drivers/net/phy/phy_device.c | 16 ++++-----------
include/linux/iopoll.h | 36 ++++++++++++++++++++++++++-------
include/linux/phy.h | 27 +++++++++++++++++++++++++
5 files changed, 68 insertions(+), 51 deletions(-)
--
2.25.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH net-next v2 1/7] iopoll: introduce read_poll_timeout macro
2020-03-20 13:34 [PATCH net-next v2 0/7] introduce read_poll_timeout Dejin Zheng
@ 2020-03-20 13:34 ` Dejin Zheng
2020-03-20 13:34 ` [PATCH net-next v2 2/7] iopoll: redefined readx_poll_timeout macro to simplify the code Dejin Zheng
` (6 subsequent siblings)
7 siblings, 0 replies; 11+ messages in thread
From: Dejin Zheng @ 2020-03-20 13:34 UTC (permalink / raw)
To: andrew, f.fainelli, hkallweit1, linux, davem, allison, corbet,
alexios.zavras, broonie, tglx, mchehab+samsung, netdev
Cc: linux-kernel, Dejin Zheng
this macro is an extension of readx_poll_timeout macro. the accessor
function op just supports only one parameter in the readx_poll_timeout
macro, but this macro can supports multiple variable parameters for
it. so functions like phy_read(struct phy_device *phydev, u32 regnum)
and phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum) can
also use this poll timeout framework.
Signed-off-by: Dejin Zheng <zhengdejin5@gmail.com>
---
v1 -> v2:
no changed
include/linux/iopoll.h | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/include/linux/iopoll.h b/include/linux/iopoll.h
index 35e15dfd4155..7d44a2e20267 100644
--- a/include/linux/iopoll.h
+++ b/include/linux/iopoll.h
@@ -13,6 +13,46 @@
#include <linux/errno.h>
#include <linux/io.h>
+/**
+ * read_poll_timeout - Periodically poll an address until a condition is
+ * met or a timeout occurs
+ * @op: accessor function (takes @args as its arguments)
+ * @val: Variable to read the value into
+ * @cond: Break condition (usually involving @val)
+ * @sleep_us: Maximum time to sleep between reads in us (0
+ * tight-loops). Should be less than ~20ms since usleep_range
+ * is used (see Documentation/timers/timers-howto.rst).
+ * @timeout_us: Timeout in us, 0 means never timeout
+ * @args: arguments for @op poll
+ *
+ * Returns 0 on success and -ETIMEDOUT upon a timeout. In either
+ * case, the last read value at @args is stored in @val. Must not
+ * be called from atomic context if sleep_us or timeout_us are used.
+ *
+ * When available, you'll probably want to use one of the specialized
+ * macros defined below rather than this macro directly.
+ */
+#define read_poll_timeout(op, val, cond, sleep_us, timeout_us, args...) \
+({ \
+ u64 __timeout_us = (timeout_us); \
+ unsigned long __sleep_us = (sleep_us); \
+ ktime_t __timeout = ktime_add_us(ktime_get(), __timeout_us); \
+ might_sleep_if((__sleep_us) != 0); \
+ for (;;) { \
+ (val) = op(args); \
+ if (cond) \
+ break; \
+ if (__timeout_us && \
+ ktime_compare(ktime_get(), __timeout) > 0) { \
+ (val) = op(args); \
+ break; \
+ } \
+ if (__sleep_us) \
+ usleep_range((__sleep_us >> 2) + 1, __sleep_us); \
+ } \
+ (cond) ? 0 : -ETIMEDOUT; \
+})
+
/**
* readx_poll_timeout - Periodically poll an address until a condition is met or a timeout occurs
* @op: accessor function (takes @addr as its only argument)
--
2.25.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH net-next v2 2/7] iopoll: redefined readx_poll_timeout macro to simplify the code
2020-03-20 13:34 [PATCH net-next v2 0/7] introduce read_poll_timeout Dejin Zheng
2020-03-20 13:34 ` [PATCH net-next v2 1/7] iopoll: introduce read_poll_timeout macro Dejin Zheng
@ 2020-03-20 13:34 ` Dejin Zheng
2020-03-20 13:34 ` [PATCH net-next v2 3/7] net: phy: introduce phy_read_mmd_poll_timeout macro Dejin Zheng
` (5 subsequent siblings)
7 siblings, 0 replies; 11+ messages in thread
From: Dejin Zheng @ 2020-03-20 13:34 UTC (permalink / raw)
To: andrew, f.fainelli, hkallweit1, linux, davem, allison, corbet,
alexios.zavras, broonie, tglx, mchehab+samsung, netdev
Cc: linux-kernel, Dejin Zheng
redefined readx_poll_timeout macro by read_poll_timeout to
simplify the code.
Signed-off-by: Dejin Zheng <zhengdejin5@gmail.com>
---
v1 -> v2:
no changed
include/linux/iopoll.h | 20 +-------------------
1 file changed, 1 insertion(+), 19 deletions(-)
diff --git a/include/linux/iopoll.h b/include/linux/iopoll.h
index 7d44a2e20267..29c016cd6249 100644
--- a/include/linux/iopoll.h
+++ b/include/linux/iopoll.h
@@ -72,25 +72,7 @@
* macros defined below rather than this macro directly.
*/
#define readx_poll_timeout(op, addr, val, cond, sleep_us, timeout_us) \
-({ \
- u64 __timeout_us = (timeout_us); \
- unsigned long __sleep_us = (sleep_us); \
- ktime_t __timeout = ktime_add_us(ktime_get(), __timeout_us); \
- might_sleep_if((__sleep_us) != 0); \
- for (;;) { \
- (val) = op(addr); \
- if (cond) \
- break; \
- if (__timeout_us && \
- ktime_compare(ktime_get(), __timeout) > 0) { \
- (val) = op(addr); \
- break; \
- } \
- if (__sleep_us) \
- usleep_range((__sleep_us >> 2) + 1, __sleep_us); \
- } \
- (cond) ? 0 : -ETIMEDOUT; \
-})
+ read_poll_timeout(op, val, cond, sleep_us, timeout_us, addr)
/**
* readx_poll_timeout_atomic - Periodically poll an address until a condition is met or a timeout occurs
--
2.25.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH net-next v2 3/7] net: phy: introduce phy_read_mmd_poll_timeout macro
2020-03-20 13:34 [PATCH net-next v2 0/7] introduce read_poll_timeout Dejin Zheng
2020-03-20 13:34 ` [PATCH net-next v2 1/7] iopoll: introduce read_poll_timeout macro Dejin Zheng
2020-03-20 13:34 ` [PATCH net-next v2 2/7] iopoll: redefined readx_poll_timeout macro to simplify the code Dejin Zheng
@ 2020-03-20 13:34 ` Dejin Zheng
2020-03-21 16:41 ` Andrew Lunn
2020-03-20 13:34 ` [PATCH net-next v2 4/7] net: phy: bcm84881: use phy_read_mmd_poll_timeout() to simplify the code Dejin Zheng
` (4 subsequent siblings)
7 siblings, 1 reply; 11+ messages in thread
From: Dejin Zheng @ 2020-03-20 13:34 UTC (permalink / raw)
To: andrew, f.fainelli, hkallweit1, linux, davem, allison, corbet,
alexios.zavras, broonie, tglx, mchehab+samsung, netdev
Cc: linux-kernel, Dejin Zheng
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@lunn.ch>
Signed-off-by: Dejin Zheng <zhengdejin5@gmail.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@lunn.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
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH net-next v2 4/7] net: phy: bcm84881: use phy_read_mmd_poll_timeout() to simplify the code
2020-03-20 13:34 [PATCH net-next v2 0/7] introduce read_poll_timeout Dejin Zheng
` (2 preceding siblings ...)
2020-03-20 13:34 ` [PATCH net-next v2 3/7] net: phy: introduce phy_read_mmd_poll_timeout macro Dejin Zheng
@ 2020-03-20 13:34 ` Dejin Zheng
2020-03-20 13:34 ` [PATCH net-next v2 5/7] net: phy: aquantia: " Dejin Zheng
` (3 subsequent siblings)
7 siblings, 0 replies; 11+ messages in thread
From: Dejin Zheng @ 2020-03-20 13:34 UTC (permalink / raw)
To: andrew, f.fainelli, hkallweit1, linux, davem, allison, corbet,
alexios.zavras, broonie, tglx, mchehab+samsung, netdev
Cc: linux-kernel, Dejin Zheng
use phy_read_mmd_poll_timeout() to replace the poll codes for
simplify the code in bcm84881_wait_init() function.
Signed-off-by: Dejin Zheng <zhengdejin5@gmail.com>
---
v1 -> v2:
- remove the handle of phy_read_mmd's return error.
drivers/net/phy/bcm84881.c | 27 ++++-----------------------
1 file changed, 4 insertions(+), 23 deletions(-)
diff --git a/drivers/net/phy/bcm84881.c b/drivers/net/phy/bcm84881.c
index 14d55a77eb28..21df9b00d2b2 100644
--- a/drivers/net/phy/bcm84881.c
+++ b/drivers/net/phy/bcm84881.c
@@ -22,30 +22,11 @@ enum {
static int bcm84881_wait_init(struct phy_device *phydev)
{
- unsigned int tries = 20;
- int ret, val;
-
- do {
- val = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_CTRL1);
- if (val < 0) {
- ret = val;
- break;
- }
- if (!(val & MDIO_CTRL1_RESET)) {
- ret = 0;
- break;
- }
- if (!--tries) {
- ret = -ETIMEDOUT;
- break;
- }
- msleep(100);
- } while (1);
+ int val;
- if (ret)
- phydev_err(phydev, "%s failed: %d\n", __func__, ret);
-
- return ret;
+ return phy_read_mmd_poll_timeout(val, !(val & MDIO_CTRL1_RESET),
+ 100000, 2000000, phydev,
+ MDIO_MMD_PMAPMD, MDIO_CTRL1);
}
static int bcm84881_config_init(struct phy_device *phydev)
--
2.25.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH net-next v2 5/7] net: phy: aquantia: use phy_read_mmd_poll_timeout() to simplify the code
2020-03-20 13:34 [PATCH net-next v2 0/7] introduce read_poll_timeout Dejin Zheng
` (3 preceding siblings ...)
2020-03-20 13:34 ` [PATCH net-next v2 4/7] net: phy: bcm84881: use phy_read_mmd_poll_timeout() to simplify the code Dejin Zheng
@ 2020-03-20 13:34 ` Dejin Zheng
2020-03-20 13:34 ` [PATCH net-next v2 6/7] net: phy: introduce phy_read_poll_timeout macro Dejin Zheng
` (2 subsequent siblings)
7 siblings, 0 replies; 11+ messages in thread
From: Dejin Zheng @ 2020-03-20 13:34 UTC (permalink / raw)
To: andrew, f.fainelli, hkallweit1, linux, davem, allison, corbet,
alexios.zavras, broonie, tglx, mchehab+samsung, netdev
Cc: linux-kernel, Dejin Zheng
use phy_read_mmd_poll_timeout() to replace the poll codes for
simplify the code in aqr107_wait_reset_complete() function.
Signed-off-by: Dejin Zheng <zhengdejin5@gmail.com>
---
v1 -> v2:
- remove the handle of phy_read_mmd's return error.
drivers/net/phy/aquantia_main.c | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/drivers/net/phy/aquantia_main.c b/drivers/net/phy/aquantia_main.c
index 31927b2c7d5a..5b9d98b05f76 100644
--- a/drivers/net/phy/aquantia_main.c
+++ b/drivers/net/phy/aquantia_main.c
@@ -451,16 +451,11 @@ static int aqr107_set_tunable(struct phy_device *phydev,
*/
static int aqr107_wait_reset_complete(struct phy_device *phydev)
{
- int val, retries = 100;
-
- do {
- val = phy_read_mmd(phydev, MDIO_MMD_VEND1, VEND1_GLOBAL_FW_ID);
- if (val < 0)
- return val;
- msleep(20);
- } while (!val && --retries);
+ int val;
- return val ? 0 : -ETIMEDOUT;
+ return phy_read_mmd_poll_timeout(val, val != 0, 20000, 2000000,
+ phydev, MDIO_MMD_VEND1,
+ VEND1_GLOBAL_FW_ID);
}
static void aqr107_chip_info(struct phy_device *phydev)
--
2.25.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH net-next v2 6/7] net: phy: introduce phy_read_poll_timeout macro
2020-03-20 13:34 [PATCH net-next v2 0/7] introduce read_poll_timeout Dejin Zheng
` (4 preceding siblings ...)
2020-03-20 13:34 ` [PATCH net-next v2 5/7] net: phy: aquantia: " Dejin Zheng
@ 2020-03-20 13:34 ` Dejin Zheng
2020-03-20 13:34 ` [PATCH net-next v2 7/7] net: phy: use phy_read_poll_timeout() to simplify the code Dejin Zheng
2020-03-21 16:50 ` [PATCH net-next v2 0/7] introduce read_poll_timeout Andrew Lunn
7 siblings, 0 replies; 11+ messages in thread
From: Dejin Zheng @ 2020-03-20 13:34 UTC (permalink / raw)
To: andrew, f.fainelli, hkallweit1, linux, davem, allison, corbet,
alexios.zavras, broonie, tglx, mchehab+samsung, netdev
Cc: linux-kernel, Dejin Zheng
it is sometimes necessary to poll a phy register by phy_read()
function until its value satisfies some condition. introduce
phy_read_poll_timeout() macros that do this.
Suggested-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Dejin Zheng <zhengdejin5@gmail.com>
---
v1 -> v2:
- pass a phydev and a regnum to replace args... parameter in
the phy_read_poll_timeout(), and also handle the
phy_read() function's return error.
include/linux/phy.h | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/include/linux/phy.h b/include/linux/phy.h
index bb351f8b8769..ecee7e436f89 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -714,6 +714,19 @@ static inline int phy_read(struct phy_device *phydev, u32 regnum)
return mdiobus_read(phydev->mdio.bus, phydev->mdio.addr, regnum);
}
+#define phy_read_poll_timeout(val, cond, sleep_us, timeout_us, phydev, regnum) \
+({ \
+ int ret = 0; \
+ ret = read_poll_timeout(phy_read, val, cond || val < 0, sleep_us, \
+ timeout_us, phydev, regnum); \
+ if (val < 0) \
+ ret = val; \
+ if (ret) \
+ phydev_err(phydev, "%s failed: %d\n", __func__, ret); \
+ ret; \
+})
+
+
/**
* __phy_read - convenience function for reading a given PHY register
* @phydev: the phy_device struct
--
2.25.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH net-next v2 7/7] net: phy: use phy_read_poll_timeout() to simplify the code
2020-03-20 13:34 [PATCH net-next v2 0/7] introduce read_poll_timeout Dejin Zheng
` (5 preceding siblings ...)
2020-03-20 13:34 ` [PATCH net-next v2 6/7] net: phy: introduce phy_read_poll_timeout macro Dejin Zheng
@ 2020-03-20 13:34 ` Dejin Zheng
2020-03-21 16:50 ` [PATCH net-next v2 0/7] introduce read_poll_timeout Andrew Lunn
7 siblings, 0 replies; 11+ messages in thread
From: Dejin Zheng @ 2020-03-20 13:34 UTC (permalink / raw)
To: andrew, f.fainelli, hkallweit1, linux, davem, allison, corbet,
alexios.zavras, broonie, tglx, mchehab+samsung, netdev
Cc: linux-kernel, Dejin Zheng
use phy_read_poll_timeout() to replace the poll codes for
simplify the code in phy_poll_reset() function.
Signed-off-by: Dejin Zheng <zhengdejin5@gmail.com>
---
v1 -> v2:
- remove the handle of phy_read()'s return error.
drivers/net/phy/phy_device.c | 16 ++++------------
1 file changed, 4 insertions(+), 12 deletions(-)
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index a585faf8b844..0de4f03ba90c 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -1059,23 +1059,15 @@ EXPORT_SYMBOL(phy_disconnect);
static int phy_poll_reset(struct phy_device *phydev)
{
/* Poll until the reset bit clears (50ms per retry == 0.6 sec) */
- unsigned int retries = 12;
- int ret;
-
- do {
- msleep(50);
- ret = phy_read(phydev, MII_BMCR);
- if (ret < 0)
- return ret;
- } while (ret & BMCR_RESET && --retries);
- if (ret & BMCR_RESET)
- return -ETIMEDOUT;
+ int ret, val;
+ ret = phy_read_poll_timeout(val, !(val & BMCR_RESET), 50000, 600000,
+ phydev, MII_BMCR);
/* Some chips (smsc911x) may still need up to another 1ms after the
* BMCR_RESET bit is cleared before they are usable.
*/
msleep(1);
- return 0;
+ return ret;
}
int phy_init_hw(struct phy_device *phydev)
--
2.25.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH net-next v2 3/7] net: phy: introduce phy_read_mmd_poll_timeout macro
2020-03-20 13:34 ` [PATCH net-next v2 3/7] net: phy: introduce phy_read_mmd_poll_timeout macro Dejin Zheng
@ 2020-03-21 16:41 ` Andrew Lunn
0 siblings, 0 replies; 11+ messages in thread
From: Andrew Lunn @ 2020-03-21 16:41 UTC (permalink / raw)
To: Dejin Zheng
Cc: f.fainelli, hkallweit1, linux, davem, allison, corbet,
alexios.zavras, broonie, tglx, mchehab+samsung, netdev,
linux-kernel
On Fri, Mar 20, 2020 at 09:34:27PM +0800, Dejin Zheng wrote:
> 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@lunn.ch>
> Signed-off-by: Dejin Zheng <zhengdejin5@gmail.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@lunn.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); \
Hi Dejin
You probably should have ( ) here to deal with precedence issues.
(cond) || val < 0
Andrew
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net-next v2 0/7] introduce read_poll_timeout
2020-03-20 13:34 [PATCH net-next v2 0/7] introduce read_poll_timeout Dejin Zheng
` (6 preceding siblings ...)
2020-03-20 13:34 ` [PATCH net-next v2 7/7] net: phy: use phy_read_poll_timeout() to simplify the code Dejin Zheng
@ 2020-03-21 16:50 ` Andrew Lunn
2020-03-22 3:03 ` Dejin Zheng
7 siblings, 1 reply; 11+ messages in thread
From: Andrew Lunn @ 2020-03-21 16:50 UTC (permalink / raw)
To: Dejin Zheng
Cc: f.fainelli, hkallweit1, linux, davem, allison, corbet,
alexios.zavras, broonie, tglx, mchehab+samsung, netdev,
linux-kernel
On Fri, Mar 20, 2020 at 09:34:24PM +0800, Dejin Zheng wrote:
> This patch sets is introduce read_poll_timeout macro, it is an extension
> of readx_poll_timeout macro. the accessor function op just supports only
> one parameter in the readx_poll_timeout macro, but this macro can
> supports multiple variable parameters for it. so functions like
> phy_read(struct phy_device *phydev, u32 regnum) and
> phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum) can
> use this poll timeout framework.
>
> the first patch introduce read_poll_timeout macro, and the second patch
> redefined readx_poll_timeout macro by read_poll_timeout(), and the other
> patches are examples using read_poll_timeout macro.
You missed lan87xx_read_status(), tja11xx_check(), and mv3310_reset().
If you convert all these, your diffstat might look better.
Andrew
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net-next v2 0/7] introduce read_poll_timeout
2020-03-21 16:50 ` [PATCH net-next v2 0/7] introduce read_poll_timeout Andrew Lunn
@ 2020-03-22 3:03 ` Dejin Zheng
0 siblings, 0 replies; 11+ messages in thread
From: Dejin Zheng @ 2020-03-22 3:03 UTC (permalink / raw)
To: Andrew Lunn
Cc: f.fainelli, hkallweit1, linux, davem, allison, corbet,
alexios.zavras, broonie, tglx, mchehab+samsung, netdev,
linux-kernel
On Sat, Mar 21, 2020 at 05:50:14PM +0100, Andrew Lunn wrote:
> On Fri, Mar 20, 2020 at 09:34:24PM +0800, Dejin Zheng wrote:
> > This patch sets is introduce read_poll_timeout macro, it is an extension
> > of readx_poll_timeout macro. the accessor function op just supports only
> > one parameter in the readx_poll_timeout macro, but this macro can
> > supports multiple variable parameters for it. so functions like
> > phy_read(struct phy_device *phydev, u32 regnum) and
> > phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum) can
> > use this poll timeout framework.
> >
> > the first patch introduce read_poll_timeout macro, and the second patch
> > redefined readx_poll_timeout macro by read_poll_timeout(), and the other
> > patches are examples using read_poll_timeout macro.
>
> You missed lan87xx_read_status(), tja11xx_check(), and mv3310_reset().
>
> If you convert all these, your diffstat might look better.
>
> Andrew
Hi Andrew:
ok, Thanks for your reminder, I will do it.
BR,
Dejin
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2020-03-22 3:03 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-20 13:34 [PATCH net-next v2 0/7] introduce read_poll_timeout Dejin Zheng
2020-03-20 13:34 ` [PATCH net-next v2 1/7] iopoll: introduce read_poll_timeout macro Dejin Zheng
2020-03-20 13:34 ` [PATCH net-next v2 2/7] iopoll: redefined readx_poll_timeout macro to simplify the code Dejin Zheng
2020-03-20 13:34 ` [PATCH net-next v2 3/7] net: phy: introduce phy_read_mmd_poll_timeout macro Dejin Zheng
2020-03-21 16:41 ` Andrew Lunn
2020-03-20 13:34 ` [PATCH net-next v2 4/7] net: phy: bcm84881: use phy_read_mmd_poll_timeout() to simplify the code Dejin Zheng
2020-03-20 13:34 ` [PATCH net-next v2 5/7] net: phy: aquantia: " Dejin Zheng
2020-03-20 13:34 ` [PATCH net-next v2 6/7] net: phy: introduce phy_read_poll_timeout macro Dejin Zheng
2020-03-20 13:34 ` [PATCH net-next v2 7/7] net: phy: use phy_read_poll_timeout() to simplify the code Dejin Zheng
2020-03-21 16:50 ` [PATCH net-next v2 0/7] introduce read_poll_timeout Andrew Lunn
2020-03-22 3:03 ` Dejin Zheng
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).