[dpdk-dev,v1] :rte_timer:timer lag issue correction

Message ID SN2PR03MB2271A060DF07CEAC221587EFB3E10@SN2PR03MB2271.namprd03.prod.outlook.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers

Commit Message

Karmarkar Suyash Aug. 29, 2016, 10:28 p.m. UTC
  Hello All,

Can you please review the change and let me know if any comments. I would like to push this patch to 16.07 release. Thanks

Regards
Suyash Karmarkar

-----Original Message-----
From: Karmarkar Suyash
Sent: Friday, August 26, 2016 9:27 AM
To: rsanford@akamai.com
Cc: dev@dpdk.org; Karmarkar Suyash <skarmarkar@sonusnet.com>
Subject: [PATCH v1]:rte_timer:timer lag issue correction

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:rte_timer: timer lag issue

Karmarkar Suyash (1):
  Signed-off-by: Karmarkar Suyash <skarmarkar@sonusnet.com<mailto:skarmarkar@sonusnet.com>>

 lib/librte_timer/rte_timer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

 From ba885531ac26af1aabc6bd0f58d7ce744b04acf7 Mon Sep 17 00:00:00 2001
From: Karmarkar Suyash <skarmarkar@sonusnet.com<mailto:skarmarkar@sonusnet.com>>
Date: Fri, 26 Aug 2016 09:20:37 -0400
Subject: [PATCH v1] Signed-off-by: Karmarkar Suyash <skarmarkar@sonusnet.com<mailto:skarmarkar@sonusnet.com>>

---
 lib/librte_timer/rte_timer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


--
2.9.3.windows.1
  

Patch

diff --git a/lib/librte_timer/rte_timer.c b/lib/librte_timer/rte_timer.c
index 43da836..18782fa 100644
--- a/lib/librte_timer/rte_timer.c
+++ b/lib/librte_timer/rte_timer.c
@@ -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);
                }