Hi Thomas, On 3 August 2016 at 15:58, Thomas Monjalon <thomas.monjalon at 6wind.com> wrote: > 2016-08-03 14:02, Jianbo Liu: >> I think we can place a compiling condition before rte_rmb() to avoid >> performance decrease on x86. >> For example: #if defined(RTE_ARCH_ARM) || defined(RTE_ARCH_ARM64) > > Please could you explain why a memory barrier would be needed on ARM but
The reason is that ARM is weealy ordered processor, and data access will be executed out of order to improve performance. In this case, we have to read 2 times, 8 descriptors each. The read statuses could be wrong if no memory barrier. I also got the outdated status for some descriptors in my testing. > not on x86? What about other architectures? I think Konstantin gave me a good solution, by using rte_smp_rmb :) Jianbo