From: Michal Krawczyk Date: Wed, 23 Feb 2022 12:19:32 +0000 (+0100) Subject: net/ena/base: use optimized memcpy version also on Arm X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=b2c1fe38ad9d6eb5f9208ef751384229442f9c6e;p=dpdk.git net/ena/base: use optimized memcpy version also on Arm As the default behavior for arm64 is to alias rte_memcpy as memcpy, ENA cannot redefine memcpy as rte_memcpy as it would cause nested declaration. To make it possible to use optimized memcpy in the ena_com layer on Arm, the driver now redefines memcpy when it is beneficial: * For arm64 only when the flag RTE_ARCH_ARM64_MEMCPY was defined * For arm only when the flag RTE_ARCH_ARM_NEON_MEMCPY was defined Signed-off-by: Michal Krawczyk Reviewed-by: Dawid Gorecki Reviewed-by: Shai Brandes --- diff --git a/doc/guides/rel_notes/release_22_03.rst b/doc/guides/rel_notes/release_22_03.rst index 8f49f11f9d..11165e9336 100644 --- a/doc/guides/rel_notes/release_22_03.rst +++ b/doc/guides/rel_notes/release_22_03.rst @@ -111,6 +111,7 @@ New Features * Added new checksum related xstats: ``l3_csum_bad``, ``l4_csum_bad`` and ``l4_csum_good``. * Added support for the link status configuration. + * Added optimized memcpy support for the ARM platforms. * **Updated Cisco enic driver.** diff --git a/drivers/net/ena/base/ena_plat_dpdk.h b/drivers/net/ena/base/ena_plat_dpdk.h index 4e7f52881a..41db883c63 100644 --- a/drivers/net/ena/base/ena_plat_dpdk.h +++ b/drivers/net/ena/base/ena_plat_dpdk.h @@ -66,8 +66,11 @@ typedef uint64_t dma_addr_t; #define ENA_UDELAY(x) rte_delay_us_block(x) #define ENA_TOUCH(x) ((void)(x)) -/* Avoid nested declaration on arm64, as it may define rte_memcpy as memcpy. */ -#if defined(RTE_ARCH_X86) +/* Redefine memcpy with caution: rte_memcpy can be simply aliased to memcpy, so + * make the redefinition only if it's safe (and beneficial) to do so. + */ +#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64_MEMCPY) || \ + defined(RTE_ARCH_ARM_NEON_MEMCPY) #undef memcpy #define memcpy rte_memcpy #endif