From: Pavan Nikhilesh <pbhagavat...@marvell.com> When estimating tsc frequency using sleep/gettime round it up to the nearest multiple of 10Mhz for more accuracy.
Signed-off-by: Pavan Nikhilesh <pbhagavat...@marvell.com> --- Useful in case of ARM64 if we enable RTE_ARM_EAL_RDTSC_USE_PMU, get_tsc_freq_arch() will return 0 as there is no instruction to determine the clk of PMU and eal falls back to sleep(1). lib/librte_eal/common/eal_common_timer.c | 4 ++-- lib/librte_eal/linuxapp/eal/eal_timer.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/librte_eal/common/eal_common_timer.c b/lib/librte_eal/common/eal_common_timer.c index dcf26bfea..1358bbed0 100644 --- a/lib/librte_eal/common/eal_common_timer.c +++ b/lib/librte_eal/common/eal_common_timer.c @@ -69,7 +69,7 @@ estimate_tsc_freq(void) /* assume that the sleep(1) will sleep for 1 second */ uint64_t start = rte_rdtsc(); sleep(1); - return rte_rdtsc() - start; + return RTE_ALIGN_MUL_NEAR(rte_rdtsc() - start, 1E7); } void @@ -83,7 +83,7 @@ set_tsc_freq(void) if (!freq) freq = estimate_tsc_freq(); - RTE_LOG(DEBUG, EAL, "TSC frequency is ~%" PRIu64 " KHz\n", freq / 1000); + RTE_LOG(INFO, EAL, "TSC frequency is ~%" PRIu64 " Hz\n", freq); eal_tsc_resolution_hz = freq; } diff --git a/lib/librte_eal/linuxapp/eal/eal_timer.c b/lib/librte_eal/linuxapp/eal/eal_timer.c index bc8f05199..864d6ef29 100644 --- a/lib/librte_eal/linuxapp/eal/eal_timer.c +++ b/lib/librte_eal/linuxapp/eal/eal_timer.c @@ -248,7 +248,7 @@ get_tsc_freq(void) double secs = (double)ns/NS_PER_SEC; tsc_hz = (uint64_t)((end - start)/secs); - return tsc_hz; + return RTE_ALIGN_MUL_NEAR(tsc_hz, 1E7); } #endif return 0; -- 2.21.0