@@ -3238,6 +3238,9 @@ F: package/rtl8822cs/
N: Victor Huesca <victor.huesca@bootlin.com>
F: support/testing/tests/core/test_root_password.py
+N: Vincent Jardin <vjardin@free.fr>
+F: package/dpdk/
+
N: Vincent Prince <vincent.prince.fr@gmail.com>
F: package/nss-myhostname/
F: package/utp_com/
@@ -1988,6 +1988,7 @@ menu "Networking"
source "package/daq3/Config.in"
source "package/davici/Config.in"
source "package/dht/Config.in"
+ source "package/dpdk/Config.in"
source "package/enet/Config.in"
source "package/filemq/Config.in"
source "package/fmlib/Config.in"
new file mode 100644
@@ -0,0 +1,33 @@
+From 121e5d019f0bb6dec0ace2b361611edd10fc8ff8 Mon Sep 17 00:00:00 2001
+From: Lee Chee Yang <chee.yang.lee@intel.com>
+Date: Wed, 6 Dec 2023 16:58:10 +0800
+Subject: [PATCH] config/meson: get cpu_instruction_set from meson option
+
+Workaround error:
+| ../git/config/meson.build:178:8: ERROR: Problem encountered: Compiler
+does not support "x86_64" arch flag.
+
+Upstream-Status: Inappropriate [ yocto specific to set cpu_instruction_set ]
+
+Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
+Upstream: https://git.yoctoproject.org/meta-dpdk/plain/recipes-extended/dpdk/dpdk/0001-config-meson-get-cpu_instruction_set-from-meson-opti.patch
+---
+ config/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/config/meson.build b/config/meson.build
+index a9ccd56deb..f310c7adf6 100644
+--- a/config/meson.build
++++ b/config/meson.build
+@@ -105,7 +105,7 @@ platform = get_option('platform')
+
+ # set the cpu_instruction_set and cflags for it
+ if meson.is_cross_build()
+- cpu_instruction_set = host_machine.cpu()
++ cpu_instruction_set = get_option('cpu_instruction_set')
+ else
+ cpu_instruction_set = get_option('cpu_instruction_set')
+ machine = get_option('machine')
+--
+2.37.3
+
new file mode 100644
@@ -0,0 +1,29 @@
+config BR2_PACKAGE_DPDK_ARCH_SUPPORTS
+ bool
+ default y
+ # DPDK can be used for the following little endian architecture
+ default y if BR2_RISCV_64
+ default y if BR2_aarch64
+ default y if BR2_powerpc64le
+ # DPDK requires SSE4.2 for x86_64 since v17.08
+ default y if BR2_x86_64 && BR2_X86_CPU_HAS_SSE42
+
+config BR2_PACKAGE_DPDK
+ bool "dpdk"
+ depends on BR2_PACKAGE_DPDK_ARCH_SUPPORTS
+ depends on BR2_TOOLCHAIN_HAS_THREADS # DPDK design
+ depends on BR2_USE_MMU # pthread() memory mappings
+ depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19
+ depends on BR2_TOOLCHAIN_USES_GLIBC
+ select BR2_PACKAGE_LIBEXECINFO if !BR2_TOOLCHAIN_USES_GLIBC
+ help
+ DPDK (Data Plane Development Kit) is a set of libraries
+ and drivers for fast packet processing.
+
+ http://dpdk.org/
+
+comment "dpdk needs a toolchain w/ dynamic library, threads, wchar, kernel headers >= 4.19"
+ depends on BR2_USE_MMU # pthread() memory mappings
+ depends on BR2_PACKAGE_DPDK_ARCH_SUPPORTS
+ depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+ !BR2_TOOLCHAIN_USES_GLIBC
new file mode 100644
@@ -0,0 +1,10 @@
+# Locally computed
+sha256 9944f7e5f268e7ac9b4193e2cd54ef6d98f6e1d7dddc967c77ae4f6616d6fbbd dpdk-24.07.tar.xz
+sha256 1531b66affc3bae796d755e12850795e56e25ccedd685bf7d2644d8ddfadbad8 license/bsd-2-clause.txt
+sha256 9acc4bc871a4742550158e3696dcb381953172ef808d04ca248184f9f6322712 license/bsd-3-clause.txt
+sha256 e19808bccd90c238fac06da2fc3683e094c64f7ba647e9d86f03a98cf5f2ce05 license/exceptions.txt
+sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 license/gpl-2.0.txt
+sha256 be8f198f2e1c9b30226e293255bbe6933ee6607a580ee5874185aa023bcc3c39 license/isc.txt
+sha256 592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8c license/lgpl-2.1.txt
+sha256 6c54c4d44faf3cba829b3d0c21c6955953e758767018fd7244f809b01d4f4845 license/mit.txt
+sha256 cae178052c96959741acb7f00634a09a8294e6cafb5ad53e158d63e3510875ab license/README
new file mode 100644
@@ -0,0 +1,87 @@
+################################################################################
+#
+# dpdk
+#
+################################################################################
+
+DPDK_VERSION = 24.07
+DPDK_SOURCE = dpdk-$(DPDK_VERSION).tar.xz
+DPDK_SITE = https://fast.dpdk.org/rel
+DPDK_LICENSE = \
+ BSD-3-Clause, \
+ BSD-2-Clause,\
+ GPL-2.0, \
+ ISC, \
+ LGPL-2.1, \
+ MIT
+
+# Only the Windows target has the 2 following licenses:
+# - license/bsd-2-clause.txt
+# - license/isc.txt
+# which is related to a Windows getopt.[ch] compatibility layer.
+# Since Buildroot is not used for Windows target, it is not listed
+# here.
+#
+# All the userland files of DPDK have dual licences BSD or GPL/LGPL
+# Since the Linux kernel modules had been removed from the DPDK, there
+# is no GPL only code into the DPDK anymore.
+# The usage of DPDK with Buildroot is for userland only, it means
+# that for the dual licenced files, BSD clause is used but not the
+# following ones:
+# - license/gpl-2.0.txt
+# - license/lgpl-2.1.txt
+# See the DPDK's license/README for more details.
+#
+# The legacy and historical license of the DPDK is BSD-3-clause.
+DPDK_LICENSE_FILES = \
+ license/README \
+ license/bsd-3-clause.txt (legacy) \
+ license/exceptions.txt \
+ license/mit.txt (drivers/net/gve/base)
+
+DPDK_DEPENDENCIES = \
+ host-pkgconf \
+ host-python-pyelftools
+
+ifeq ($(BR2_PACKAGE_LIBBSD),y)
+DPDK_DEPENDENCIES += libbsd
+endif
+
+ifeq ($(BR2_PACKAGE_JANSSON),y)
+DPDK_DEPENDENCIES += jansson
+endif
+
+ifeq ($(BR2_PACKAGE_LIBPCAP),y)
+DPDK_DEPENDENCIES += libpcap
+endif
+
+ifeq ($(BR2_PACKAGE_ZLIB),y)
+DPDK_DEPENDENCIES += zlib
+endif
+
+ifeq ($(BR2_PACKAGE_LIBEXECINFO),y)
+DPDK_DEPENDENCIES += libexecinfo
+endif
+
+ifeq ($(BR2_PACKAGE_NUMACTL),y)
+DPDK_DEPENDENCIES += numactl
+endif
+
+ifeq ($(BR2_PACKAGE_LIBARCHIVE),y)
+DPDK_DEPENDENCIES += libarchive
+endif
+
+ifeq ($(BR2_PACKAGE_LIBBPF),y)
+DPDK_DEPENDENCIES += libbpf
+endif
+
+ifeq ($(BR2_PACKAGE_RDMA_CORE),y)
+DPDK_DEPENDENCIES += rdma-core
+endif
+
+# DPDK's meson shall need to be clean'd, hack here along the enclosed patch
+DPDK_CONF_OPTS += -Dcpu_instruction_set=$(BR2_GCC_TARGET_ARCH)
+# Keep the following, even if not mandatory, until the removal of the patch
+DPDK_MESON_EXTRA_PROPERTIES += platform='generic'
+
+$(eval $(meson-package))