]> git.droids-corp.org - dpdk.git/commitdiff
timer: fix lag delay
authorKarmarkar Suyash <skarmarkar@sonusnet.com>
Wed, 21 Sep 2016 20:54:27 +0000 (16:54 -0400)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 5 Oct 2016 10:02:53 +0000 (12:02 +0200)
For periodic timers, if the lag gets introduced, the current code
added additional delay when the next peridoc timer was initialized
by not taking into account the delay added, with this fix the code
would start the next occurrence of timer keeping in account the
lag added. Corrected the behavior.

Fixes: 9b15ba89 ("timer: use a skip list")
Signed-off-by: Karmarkar Suyash <skarmarkar@sonusnet.com>
Acked-by: Robert Sanford <rsanford@akamai.com>
lib/librte_timer/rte_timer.c

index 43da8365462ee43a60cf2b573de7285fd68414c8..18782fab0a7a6af2c22010b5c9be0d1f8d642347 100644 (file)
@@ -613,7 +613,7 @@ void rte_timer_manage(void)
                        status.owner = (int16_t)lcore_id;
                        rte_wmb();
                        tim->status.u32 = status.u32;
-                       __rte_timer_reset(tim, cur_time + tim->period,
+                       __rte_timer_reset(tim, tim->expire + tim->period,
                                tim->period, lcore_id, tim->f, tim->arg, 1);
                        rte_spinlock_unlock(&priv_timer[lcore_id].list_lock);
                }