net/sfc: support aarch64 architecture
Enable the PMD build on aarch64. Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Reviewed-by: Andy Moreton <amoreton@xilinx.com>
This commit is contained in:
parent
31113761e2
commit
141d287067
config/arm
doc/guides
drivers
@ -22,7 +22,6 @@ flags_common_default = [
|
|||||||
# ['RTE_ARM64_MEMCPY_STRICT_ALIGN', false],
|
# ['RTE_ARM64_MEMCPY_STRICT_ALIGN', false],
|
||||||
|
|
||||||
['RTE_NET_FM10K', false],
|
['RTE_NET_FM10K', false],
|
||||||
['RTE_NET_SFC_EFX', false],
|
|
||||||
['RTE_NET_AVP', false],
|
['RTE_NET_AVP', false],
|
||||||
|
|
||||||
['RTE_SCHED_VECTOR', false],
|
['RTE_SCHED_VECTOR', false],
|
||||||
|
@ -40,4 +40,5 @@ Multiprocess aware = Y
|
|||||||
BSD nic_uio = Y
|
BSD nic_uio = Y
|
||||||
Linux UIO = Y
|
Linux UIO = Y
|
||||||
Linux VFIO = Y
|
Linux VFIO = Y
|
||||||
|
ARMv8 = Y
|
||||||
x86-64 = Y
|
x86-64 = Y
|
||||||
|
@ -206,6 +206,7 @@ New Features
|
|||||||
* Added SR-IOV PF support
|
* Added SR-IOV PF support
|
||||||
* Added Alveo SN1000 SmartNICs (EF100 architecture) support including
|
* Added Alveo SN1000 SmartNICs (EF100 architecture) support including
|
||||||
flow API transfer rules for switch HW offload
|
flow API transfer rules for switch HW offload
|
||||||
|
* Added ARMv8 support
|
||||||
|
|
||||||
* **Added Wangxun txgbe PMD.**
|
* **Added Wangxun txgbe PMD.**
|
||||||
|
|
||||||
|
@ -39,8 +39,25 @@ extern "C" {
|
|||||||
|
|
||||||
#define EFSYS_HAS_UINT64 1
|
#define EFSYS_HAS_UINT64 1
|
||||||
#define EFSYS_USE_UINT64 1
|
#define EFSYS_USE_UINT64 1
|
||||||
|
/*
|
||||||
|
* __SSE2__ is defined by a compiler if target architecture supports
|
||||||
|
* Streaming SIMD Extensions 2 (SSE2). __m128i is a data type used
|
||||||
|
* by the extension instructions.
|
||||||
|
*/
|
||||||
|
#if defined(__SSE2__)
|
||||||
#define EFSYS_HAS_UINT128 1
|
#define EFSYS_HAS_UINT128 1
|
||||||
typedef __m128i efsys_uint128_t;
|
typedef __m128i efsys_uint128_t;
|
||||||
|
/*
|
||||||
|
* __int128 and unsigned __int128 are compiler extensions (built-in types).
|
||||||
|
* __SIZEOF_INT128__ is defined by the compiler if these data types are
|
||||||
|
* available.
|
||||||
|
*/
|
||||||
|
#elif defined(__SIZEOF_INT128__)
|
||||||
|
#define EFSYS_HAS_UINT128 1
|
||||||
|
typedef unsigned __int128 efsys_uint128_t;
|
||||||
|
#else
|
||||||
|
#error Unsigned 128-bit width integers support is required
|
||||||
|
#endif
|
||||||
|
|
||||||
#if RTE_BYTE_ORDER == RTE_BIG_ENDIAN
|
#if RTE_BYTE_ORDER == RTE_BIG_ENDIAN
|
||||||
#define EFSYS_IS_BIG_ENDIAN 1
|
#define EFSYS_IS_BIG_ENDIAN 1
|
||||||
|
@ -5,9 +5,9 @@
|
|||||||
# This software was jointly developed between OKTET Labs (under contract
|
# This software was jointly developed between OKTET Labs (under contract
|
||||||
# for Solarflare) and Solarflare Communications, Inc.
|
# for Solarflare) and Solarflare Communications, Inc.
|
||||||
|
|
||||||
if arch_subdir != 'x86' or not dpdk_conf.get('RTE_ARCH_64')
|
if (arch_subdir != 'x86' or not dpdk_conf.get('RTE_ARCH_64')) and (arch_subdir != 'arm' or not host_machine.cpu_family().startswith('aarch64'))
|
||||||
build = false
|
build = false
|
||||||
reason = 'only supported on x86_64'
|
reason = 'only supported on x86_64 and aarch64'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
extra_flags = []
|
extra_flags = []
|
||||||
|
@ -6,9 +6,9 @@
|
|||||||
# This software was jointly developed between OKTET Labs (under contract
|
# This software was jointly developed between OKTET Labs (under contract
|
||||||
# for Solarflare) and Solarflare Communications, Inc.
|
# for Solarflare) and Solarflare Communications, Inc.
|
||||||
|
|
||||||
if arch_subdir != 'x86' or not dpdk_conf.get('RTE_ARCH_64')
|
if (arch_subdir != 'x86' or not dpdk_conf.get('RTE_ARCH_64')) and (arch_subdir != 'arm' or not host_machine.cpu_family().startswith('aarch64'))
|
||||||
build = false
|
build = false
|
||||||
reason = 'only supported on x86_64'
|
reason = 'only supported on x86_64 and aarch64'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
extra_flags = []
|
extra_flags = []
|
||||||
|
@ -22,6 +22,15 @@ extern "C" {
|
|||||||
|
|
||||||
#define SFC_EF10_EV_QCLEAR_MASK (~(SFC_EF10_EV_PER_CACHE_LINE - 1))
|
#define SFC_EF10_EV_QCLEAR_MASK (~(SFC_EF10_EV_PER_CACHE_LINE - 1))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Use simple libefx-based implementation of the
|
||||||
|
* sfc_ef10_ev_qclear_cache_line() if SSE2 is not available
|
||||||
|
* since optimized implementation uses __m128i intrinsics.
|
||||||
|
*/
|
||||||
|
#ifndef __SSE2__
|
||||||
|
#define SFC_EF10_EV_QCLEAR_USE_EFX
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(SFC_EF10_EV_QCLEAR_USE_EFX)
|
#if defined(SFC_EF10_EV_QCLEAR_USE_EFX)
|
||||||
static inline void
|
static inline void
|
||||||
sfc_ef10_ev_qclear_cache_line(void *ptr)
|
sfc_ef10_ev_qclear_cache_line(void *ptr)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user