timer: fix pending counter
authorVadim Suraev <vadim.suraev@gmail.com>
Wed, 21 May 2014 20:35:55 +0000 (23:35 +0300)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Mon, 26 May 2014 16:22:04 +0000 (18:22 +0200)
commit57f0ba5f8b8588dfa6ffcd001447ef6337afa6cd
tree08a128763f0c2d24a93b3230e4a93c0f54ce63f1
parent83cb53f3a2630fc39e6d87372aefe6950df4b144
timer: fix pending counter

Bug: When a timer is running
 - if rte_timer_stop is called, the pending decrement is
 skipped (decremented only if the timer is pending) and due
 to the update flag the future processing is skipped so the
 timer is counted as pending while it is stopped. - the same
 applies when rte_timer_reset is called but then the pending
 statistics is additionally incremented so the timer is
 counted pending twice.
Solution: decrement the pending
 statistics after returning from the callback. If
 rte_timer_stop was called, it skipped decrementing the
 pending statistics. If rte_time_reset was called, the
 pending statistics was incremented. If neither was called
 and the timer is periodic, the pending statistics is
 incremented when it is reloaded

Signed-off-by: Vadim Suraev <vadim.suraev@gmail.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
lib/librte_timer/rte_timer.c