test/bonding: fix LSC related cases
authorKrzysztof Kanas <kkanas@marvell.com>
Fri, 23 Aug 2019 08:16:58 +0000 (10:16 +0200)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 23 Oct 2019 14:43:08 +0000 (16:43 +0200)
On rare situation test_link_bonding test case fail due to timespec
tv_nsec overflow, which causes pthread_cond_timedwait to return EINVAL
and test to fail.

Fixes: 76d29903f5f5 ("bond: support link status interrupt")
Cc: stable@dpdk.org
Signed-off-by: Krzysztof Kanas <kkanas@marvell.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
app/test/test_link_bonding.c

index a9b9d0c..b5ce9db 100644 (file)
@@ -1202,6 +1202,11 @@ lsc_timeout(int wait_us)
        ts.tv_sec = tp.tv_sec;
        ts.tv_nsec = tp.tv_usec * 1000;
        ts.tv_nsec += wait_us * 1000;
+       /* Normalize tv_nsec to [0,999999999L] */
+       while (ts.tv_nsec > 1000000000L) {
+               ts.tv_nsec -= 1000000000L;
+               ts.tv_sec += 1;
+       }
 
        pthread_mutex_lock(&mutex);
        if (test_lsc_interrupt_count < 1)