drivers/net/ethernet/ti/tlan.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
From: Zhang Enpei <zhang.enpei@zte.com.cn>
Use time_is_before_eq_jiffies macro instead of using jiffies directly to
handle wraparound.
Signed-off-by: Zhang Enpei <zhang.enpei@zte.com.cn>
---
drivers/net/ethernet/ti/tlan.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/ti/tlan.c b/drivers/net/ethernet/ti/tlan.c
index a55b0f951181..7c5e51284942 100644
--- a/drivers/net/ethernet/ti/tlan.c
+++ b/drivers/net/ethernet/ti/tlan.c
@@ -1817,7 +1817,6 @@ static void tlan_timer(struct timer_list *t)
{
struct tlan_priv *priv = timer_container_of(priv, t, timer);
struct net_device *dev = priv->dev;
- u32 elapsed;
unsigned long flags = 0;
priv->timer.function = NULL;
@@ -1844,8 +1843,7 @@ static void tlan_timer(struct timer_list *t)
case TLAN_TIMER_ACTIVITY:
spin_lock_irqsave(&priv->lock, flags);
if (priv->timer.function == NULL) {
- elapsed = jiffies - priv->timer_set_at;
- if (elapsed >= TLAN_TIMER_ACT_DELAY) {
+ if (time_is_before_eq_jiffies(priv->timer_set_at + TLAN_TIMER_ACT_DELAY)) {
tlan_dio_write8(dev->base_addr,
TLAN_LED_REG, TLAN_LED_LINK);
} else {
--
2.25.1
On Wed, Aug 27, 2025 at 03:54:55PM +0800, zhang.enpei@zte.com.cn wrote:
> From: Zhang Enpei <zhang.enpei@zte.com.cn>
>
> Use time_is_before_eq_jiffies macro instead of using jiffies directly to
> handle wraparound.
>
> Signed-off-by: Zhang Enpei <zhang.enpei@zte.com.cn>
Unfortunately W=1 builds fail with this patch.
GCC 15.1.o says:
In file included from ./include/linux/bitops.h:7,
from ./include/linux/kernel.h:23,
from ./include/linux/cpumask.h:11,
from ./include/linux/alloc_tag.h:13,
from ./include/linux/percpu.h:5,
from ./include/linux/context_tracking_state.h:5,
from ./include/linux/hardirq.h:5,
from drivers/net/ethernet/ti/tlan.c:32:
drivers/net/ethernet/ti/tlan.c: In function 'tlan_timer':
./include/linux/typecheck.h:12:25: warning: comparison of distinct pointer types lacks a cast [-Wcompare-distinct-pointer-types]
12 | (void)(&__dummy == &__dummy2); \
| ^~
./include/linux/jiffies.h:149:10: note: in expansion of macro 'typecheck'
149 | typecheck(unsigned long, b) && \
| ^~~~~~~~~
./include/linux/jiffies.h:292:38: note: in expansion of macro 'time_after_eq'
292 | #define time_is_before_eq_jiffies(a) time_after_eq(jiffies, a)
| ^~~~~~~~~~~~~
drivers/net/ethernet/ti/tlan.c:1846:29: note: in expansion of macro 'time_is_before_eq_jiffies'
1846 | if (time_is_before_eq_jiffies(priv->timer_set_at + TLAN_TIMER_ACT_DELAY)) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~
--
pw-bot: changes-requested
On 8/27/2025 12:54 AM, zhang.enpei@zte.com.cn wrote:
> From: Zhang Enpei <zhang.enpei@zte.com.cn>
>
> Use time_is_before_eq_jiffies macro instead of using jiffies directly to
> handle wraparound.
>
> Signed-off-by: Zhang Enpei <zhang.enpei@zte.com.cn>
> ---
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
> drivers/net/ethernet/ti/tlan.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/drivers/net/ethernet/ti/tlan.c b/drivers/net/ethernet/ti/tlan.c
> index a55b0f951181..7c5e51284942 100644
> --- a/drivers/net/ethernet/ti/tlan.c
> +++ b/drivers/net/ethernet/ti/tlan.c
> @@ -1817,7 +1817,6 @@ static void tlan_timer(struct timer_list *t)
> {
> struct tlan_priv *priv = timer_container_of(priv, t, timer);
> struct net_device *dev = priv->dev;
> - u32 elapsed;
> unsigned long flags = 0;
>
> priv->timer.function = NULL;
> @@ -1844,8 +1843,7 @@ static void tlan_timer(struct timer_list *t)
> case TLAN_TIMER_ACTIVITY:
> spin_lock_irqsave(&priv->lock, flags);
> if (priv->timer.function == NULL) {
> - elapsed = jiffies - priv->timer_set_at;
> - if (elapsed >= TLAN_TIMER_ACT_DELAY) {
> + if (time_is_before_eq_jiffies(priv->timer_set_at + TLAN_TIMER_ACT_DELAY)) {
> tlan_dio_write8(dev->base_addr,
> TLAN_LED_REG, TLAN_LED_LINK);
> } else {
© 2016 - 2026 Red Hat, Inc.