diff --git a/DEVELOPERS b/DEVELOPERS
index 426590d5c5..7c3d858e40 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -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/
diff --git a/package/Config.in b/package/Config.in
index 211080345a..90e521330b 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -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"
diff --git a/package/dpdk/0001-config-meson-get-cpu_instruction_set-from-meson-opti.patch b/package/dpdk/0001-config-meson-get-cpu_instruction_set-from-meson-opti.patch
new file mode 100644
index 0000000000..8e99379fb6
--- /dev/null
+++ b/package/dpdk/0001-config-meson-get-cpu_instruction_set-from-meson-opti.patch
@@ -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
+
diff --git a/package/dpdk/0010-Fix-aarch64-build.patch b/package/dpdk/0010-Fix-aarch64-build.patch
new file mode 100644
index 0000000000..845ec9235b
--- /dev/null
+++ b/package/dpdk/0010-Fix-aarch64-build.patch
@@ -0,0 +1,42 @@
+From c5ea091a74bbfa5fb095d2c6fe15be3a7b15cacb Mon Sep 17 00:00:00 2001
+From: Julien Olivain <ju.o@free.fr>
+Date: Sun, 8 Sep 2024 13:20:14 +0200
+Subject: [PATCH] Fix aarch64 build
+
+The condition on which DPDK meson skip the -march detection for Aarch64
+seems incorrect or incomplete. This patch changes the condition in order
+to better match the comment (that the options are decided in
+config/arm/meson.build). It actually test for the architecture name.
+
+While this patch might need some discussion with DPDK maintainers to
+cover all situations, it can still be useful here in Buildroot, as it
+fixes the Aarch64 cross compilation.
+
+Signed-off-by: Julien Olivain <ju.o@free.fr>
+Upstream: to be proposed https://patches.dpdk.org/project/dpdk/list/
+Links: cherry-picked from https://github.com/jolivain/dpdk/commit/c5ea091a74bbfa5fb095d2c6fe15be3a7b15cacb
+---
+ config/meson.build | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/config/meson.build b/config/meson.build
+index 8c8b019c25..ea48e55ce3 100644
+--- a/config/meson.build
++++ b/config/meson.build
+@@ -176,10 +176,10 @@ if not is_ms_compiler
+     else
+         machine_args += '-march=' + cpu_instruction_set
+         # arm manages generic/auto config in config/arm/meson.build
+-        if cpu_instruction_set != 'generic' and cpu_instruction_set != 'auto'
+-            compiler_arch_support = cc.has_argument('-march=' + cpu_instruction_set)
+-        else
++        if host_machine.cpu_family().startswith('aarch')
+             compiler_arch_support = true
++        else
++            compiler_arch_support = cc.has_argument('-march=' + cpu_instruction_set)
+         endif
+     endif
+     if not compiler_arch_support
+--
+2.46.0
+
diff --git a/package/dpdk/Config.in b/package/dpdk/Config.in
new file mode 100644
index 0000000000..2fe129c47f
--- /dev/null
+++ b/package/dpdk/Config.in
@@ -0,0 +1,45 @@
+config BR2_PACKAGE_DPDK_ARCH_SUPPORTS
+	bool
+	# DPDK can be used for the following little endian architecture
+	default y if BR2_aarch64
+	# 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_GCC_AT_LEAST_4_9 # C11/stdatomic.h
+	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/
+
+if BR2_PACKAGE_DPDK
+
+config BR2_PACKAGE_DPDK_EXAMPLES
+	bool "Install examples"
+	help
+	  Install all DPDK examples.
+
+config BR2_PACKAGE_DPDK_TESTS
+	bool "Install tests"
+	help
+	  Install all DPDK tests.
+
+endif
+
+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_GCC_AT_LEAST_4_9 # C11/stdatomic.h
+	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_USES_GLIBC || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \
+		!BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19
diff --git a/package/dpdk/dpdk.hash b/package/dpdk/dpdk.hash
new file mode 100644
index 0000000000..4e98d9dc25
--- /dev/null
+++ b/package/dpdk/dpdk.hash
@@ -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
diff --git a/package/dpdk/dpdk.mk b/package/dpdk/dpdk.mk
new file mode 100644
index 0000000000..0c6be05e6e
--- /dev/null
+++ b/package/dpdk/dpdk.mk
@@ -0,0 +1,99 @@
+################################################################################
+#
+# dpdk
+#
+################################################################################
+
+DPDK_VERSION = 24.07
+DPDK_SOURCE = dpdk-$(DPDK_VERSION).tar.xz
+DPDK_SITE = https://fast.dpdk.org/rel
+DPDK_LICENSE = \
+	BSD-3-Clause (legacy), \
+	BSD-2-Clause, \
+	GPL-2.0, \
+	ISC, \
+	LGPL-2.1, \
+	MIT (drivers/net/gve/base)
+
+# 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 \
+	license/exceptions.txt \
+	license/mit.txt
+
+DPDK_DEPENDENCIES = \
+	host-pkgconf \
+	host-python-pyelftools
+
+ifeq ($(BR2_PACKAGE_DPDK_EXAMPLES),y)
+DPDK_CONF_OPTS += -Dexamples=all
+else
+DPDK_CONF_OPTS += -Dexamples=
+endif
+
+ifeq ($(BR2_PACKAGE_DPDK_TESTS),y)
+DPDK_CONF_OPTS += -Dtests=true
+else
+DPDK_CONF_OPTS += -Dtests=false
+endif
+
+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))
