Cache align Rx and Tx queue struct to avoid false sharing. RX struct happens to be 64 bytes on x86_64 already, so cache alignment has no effect there, but it does on 32-bit ISAs.
TX struct is 56 bytes on x86_64. Both structs keep counters, and in the RX case they are updated even for empty polls. Fixes: 364e08f2bbc0 ("af_packet: add PMD for AF_PACKET-based virtual devices") Cc: sta...@dpdk.org Signed-off-by: Mattias Rönnblom <mattias.ronnb...@ericsson.com> --- drivers/net/af_packet/rte_eth_af_packet.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c index 397a32db58..28aeb7d08e 100644 --- a/drivers/net/af_packet/rte_eth_af_packet.c +++ b/drivers/net/af_packet/rte_eth_af_packet.c @@ -6,6 +6,7 @@ * All rights reserved. */ +#include <rte_common.h> #include <rte_string_fns.h> #include <rte_mbuf.h> #include <ethdev_driver.h> @@ -53,7 +54,7 @@ struct pkt_rx_queue { volatile unsigned long rx_pkts; volatile unsigned long rx_bytes; -}; +} __rte_cache_aligned; struct pkt_tx_queue { int sockfd; @@ -67,7 +68,7 @@ struct pkt_tx_queue { volatile unsigned long tx_pkts; volatile unsigned long err_pkts; volatile unsigned long tx_bytes; -}; +} __rte_cache_aligned; struct pmd_internals { unsigned nb_queues; -- 2.34.1