[dpdk-dev] app/testpmd: fix timeout in Rx queue flushing

Message ID 1473328156-32488-1-git-send-email-james.g.poole@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers

Commit Message

James Poole Sept. 8, 2016, 9:49 a.m. UTC
  When testpmd is run, the application would hang on the second time
that "start" is executed. This is because the timer limit would get
multiplied to an unreachably high number.

At the start of flush_fwd_rx_queues(), the timer limit now resets
to stop it from getting to this high number.

The timer has been made local for this function.

Fixes: f487715f36f5 ("app/testpmd: add timeout in Rx queue flushing")

Signed-off-by: James Poole <james.g.poole@intel.com>
---
 app/test-pmd/testpmd.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)
  

Comments

Ferruh Yigit Sept. 13, 2016, 4:04 p.m. UTC | #1
On 9/8/2016 10:49 AM, James Poole wrote:
> When testpmd is run, the application would hang on the second time
> that "start" is executed. This is because the timer limit would get
> multiplied to an unreachably high number.
> 
> At the start of flush_fwd_rx_queues(), the timer limit now resets
> to stop it from getting to this high number.
> 
> The timer has been made local for this function.
> 
> Fixes: f487715f36f5 ("app/testpmd: add timeout in Rx queue flushing")
> 
> Signed-off-by: James Poole <james.g.poole@intel.com>

Acked-by: <ferruh.yigit@intel.com>
  
Thomas Monjalon Sept. 23, 2016, 6:20 p.m. UTC | #2
2016-09-13 17:04, Ferruh Yigit:
> On 9/8/2016 10:49 AM, James Poole wrote:
> > When testpmd is run, the application would hang on the second time
> > that "start" is executed. This is because the timer limit would get
> > multiplied to an unreachably high number.
> > 
> > At the start of flush_fwd_rx_queues(), the timer limit now resets
> > to stop it from getting to this high number.
> > 
> > The timer has been made local for this function.
> > 
> > Fixes: f487715f36f5 ("app/testpmd: add timeout in Rx queue flushing")
> > 
> > Signed-off-by: James Poole <james.g.poole@intel.com>
> 
> Acked-by: <ferruh.yigit@intel.com>

Applied, thanks
  

Patch

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 1428974..33a1403 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -272,9 +272,6 @@  uint32_t bypass_timeout = RTE_BYPASS_TMT_OFF;
 
 #endif
 
-/* default period is 1 second */
-static uint64_t timer_period = 1;
-
 /*
  * Ethernet device configuration.
  */
@@ -881,9 +878,10 @@  flush_fwd_rx_queues(void)
 	uint16_t  i;
 	uint8_t   j;
 	uint64_t prev_tsc = 0, diff_tsc, cur_tsc, timer_tsc = 0;
+	uint64_t timer_period;
 
 	/* convert to number of cycles */
-	timer_period *= rte_get_timer_hz();
+	timer_period = rte_get_timer_hz(); /* 1 second timeout */
 
 	for (j = 0; j < 2; j++) {
 		for (rxp = 0; rxp < cur_fwd_config.nb_fwd_ports; rxp++) {