Prior to "ethdev: add port ownership" change, the fast path structure struct rte_eth_dev->data was cache aligned due to the fact that eth_dev_data was allocated from rte_malloc with cache aligned attribute. "ethdev: add port ownership" change set introduced a rte_eth_dev_shared_data container for port ownership change, This resulted in rte_eth_dev->data memory as cache unaligned. Added a compiler alignment attribute to make sure rte_eth_dev->data always cache aligned and hence compiler can load/store the elements in struct rte_eth_dev_data as naturally aligned.
Some platform like thunderx + l3fwd showed 1% regression in the performance with the offending changeset. Fixes: 5b7ba31148a8 ("ethdev: add port ownership") Cc: Matan Azrad <ma...@mellanox.com> Cc: Thomas Monjalon <tho...@monjalon.net> Cc: Konstantin Ananyev <konstantin.anan...@intel.com> Signed-off-by: Jerin Jacob <jerin.ja...@caviumnetworks.com> Signed-off-by: Pavan Nikhilesh <pbhagavat...@caviumnetworks.com> --- lib/librte_ether/rte_ethdev_core.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/librte_ether/rte_ethdev_core.h b/lib/librte_ether/rte_ethdev_core.h index 315b31723..e5681e466 100644 --- a/lib/librte_ether/rte_ethdev_core.h +++ b/lib/librte_ether/rte_ethdev_core.h @@ -601,7 +601,7 @@ struct rte_eth_dev_data { struct rte_vlan_filter_conf vlan_filter_conf; /**< VLAN filter configuration. */ struct rte_eth_dev_owner owner; /**< The port owner. */ -}; +} __rte_cache_aligned; /** * @internal -- 2.16.1