This series adds missing read barriers after reading avail index for split ring and desc flags for packed ring.
Once that fixed, the casts to volatile are useless and so removed. Also, it turns out that some descriptors prefetching are either badly placed, or useless, last part of the series fixes that. With the series applied, I get between 0 and 4% gain depending on the benchmark (testpmd txonly/rxonly/io). Thanks to Jason for reporting the missing read barriers. Maxime Coquelin (5): vhost: enforce avail index and desc read ordering vhost: enforce desc flags and content read ordering vhost: prefetch descriptor after the read barrier vhost: remove useless prefetch for packed ring descriptor vhost: remove useless casts to volatile lib/librte_vhost/virtio_net.c | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) -- 2.17.2