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

Message ID 67760434-4F5D-4F1E-9195-CFE3AFDB8030@akamai.com (mailing list archive)
State Not Applicable, archived
Headers

Commit Message

Sanford, Robert Oct. 4, 2016, 8:51 p.m. UTC
  Sorry, just saw this. I will take a look and get back shortly.

--
Regards,
Robert



On 10/4/16, 3:31 PM, "Karmarkar Suyash" <skarmarkar@sonusnet.com> wrote:

Hello Robert/Thomas,

Can you please review the changes in V2 of the Patch and suggest next steps? Thanks

Regards
Suyash Karmarkar

-----Original Message-----
From: Karmarkar Suyash 

Sent: Thursday, September 29, 2016 10:27 AM
To: dev@dpdk.org; thomas.monjalon@6wind.com; rsanford@akamai.com; reshma.pattan@intel.com
Subject: RE: [PATCH v2]:rte_timer:timer lag issue correction

Hello,

Can you please review the changes and suggest next steps? Thanks

Regards
Suyash Karmarkar

-----Original Message-----
From: Karmarkar Suyash

Sent: Wednesday, September 21, 2016 4:54 PM
To: dev@dpdk.org; thomas.monjalon@6wind.com; rsanford@akamai.com; reshma.pattan@intel.com
Cc: Karmarkar Suyash <skarmarkar@sonusnet.com>
Subject: [PATCH v2]: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: 9b15ba89 ("timer: use a skip list")

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


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

 
---
 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);
 		}