Statistics are only updated from a single thread at a time and the compiler should not have to worry about optimizing them. The statistics returned are 64 bit so use uint64_t instead of arch specific unsigned long.
Signed-off-by: Stephen Hemminger <[email protected]> --- drivers/net/af_packet/rte_eth_af_packet.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c index ef11b8fb6b..158393dd70 100644 --- a/drivers/net/af_packet/rte_eth_af_packet.c +++ b/drivers/net/af_packet/rte_eth_af_packet.c @@ -57,10 +57,10 @@ struct __rte_cache_aligned pkt_rx_queue { uint8_t vlan_strip; uint8_t timestamp_offloading; - volatile unsigned long rx_pkts; - volatile unsigned long rx_bytes; - volatile unsigned long rx_nombuf; - volatile unsigned long rx_dropped_pkts; + uint64_t rx_pkts; + uint64_t rx_bytes; + uint64_t rx_nombuf; + uint64_t rx_dropped_pkts; }; struct __rte_cache_aligned pkt_tx_queue { @@ -72,9 +72,9 @@ struct __rte_cache_aligned pkt_tx_queue { unsigned int framecount; unsigned int framenum; - volatile unsigned long tx_pkts; - volatile unsigned long err_pkts; - volatile unsigned long tx_bytes; + uint64_t tx_pkts; + uint64_t tx_bytes; + uint64_t err_pkts; }; struct pmd_internals { -- 2.51.0

