[dpdk-dev] [PATCH v4 3/3] rxtx_callbacks: Add support for HW timestamp

Thomas Monjalon thomas at monjalon.net
Thu Jun 13 07:55:37 CEST 2019


02/05/2019 21:11, Tom Barbette:
> +	if (hw_timestamping && ticks_per_cycle_mult  == 0) {
> +		uint64_t cycles_base = rte_rdtsc();
> +		uint64_t ticks_base;
> +		retval = rte_eth_read_clock(port, &ticks_base);
> +		if (retval != 0)
> +			return retval;
> +		rte_delay_ms(100);
> +		uint64_t cycles = rte_rdtsc();
> +		uint64_t ticks;
> +		rte_eth_read_clock(port, &ticks);
> +		uint64_t c_freq = cycles - cycles_base;
> +		uint64_t t_freq = ticks - ticks_base;
> +		double freq_mult = (double)c_freq / t_freq;
> +		printf("TSC Freq ~= %lu\nHW Freq ~= %lu\nRatio : %f\n",
> +				c_freq * 10, t_freq * 10, freq_mult);
> +		/* TSC will be faster than internal ticks so freq_mult is > 0
> +		 * We convert the multiplication to an integer shift & mult
> +		 */
> +		ticks_per_cycle_mult = (1 << TICKS_PER_CYCLE_SHIFT) / freq_mult;
> +	}

I see two issues in this code:
1/ statements are mixed with variable declarations
2/ %lu is used for 64-bit variables, which does not work on 32-bit system.

I am fixing item 2 when merging.
I hope item 1 won't be an issue for some old compilers.




More information about the dev mailing list