On Tue, 21 Mar 2017 17:43:36 -0400 Ed Czeck <ed.cz...@atomicrules.com> wrote:
> + volatile uint32_t ctrl; > + volatile uint32_t stats_clear; > + volatile uint32_t cplh_max; You are using a lot of 'volatile' in this driver. In general volatile should be reserved for known software shared data structures rather than every device register and statistics. I.e volatile is an inefficient replacement for proper use of barriers. The DPDK is not as stringent as Linux kernel (the kernel community considers almost all use of volatile a bug). See kernel document. process/volatile-considered-harmful.rst Do you understand that volatile requires compiler to generate the most paranoid code possible. Basically every reference turns into a barrier.