Submit home:dpitchumani:branches:network/dpdk to network/dpdk 

Description :
- Update to LTS version 23.11. Some are the fixes are below,
    * app/crypto-perf: add missing op resubmission
    * app/crypto-perf: fix copy segment size
    * app/crypto-perf: fix data comparison
    * app/crypto-perf: fix encrypt operation verification
    * app/crypto-perf: fix next segment mbuf
    * app/crypto-perf: fix out-of-place mbuf size
    * app/crypto-perf: verify strdup return
    * app/dma-perf: verify strdup return
    * app/dumpcap: verify strdup return
    * app/graph: fix build reason
    * app/pdump: verify strdup return
    * app/testpmd: fix --stats-period option check
    * app/testpmd: fix GRO packets flush on timeout
    * app/testpmd: fix async flow create failure handling
    * app/testpmd: fix async indirect action list creation
    * app/testpmd: fix auto-completion for indirect action list
    * app/testpmd: fix burst option parsing
    * app/testpmd: fix crash in multi-process forwarding
    * app/testpmd: fix error message for invalid option
    * app/testpmd: fix flow modify tag typo
    * app/testpmd: hide --bitrate-stats in help if disabled
    * app/testpmd: return if no packets in GRO heavy weight mode
    * app/testpmd: verify strdup return
    * build: fix linker warnings about undefined symbols
    * build: fix reasons conflict
    * build: link static libs with whole-archive in subproject
    * build: pass cflags in subproject
    * buildtools/cmdline: fix IP address initializer
    * buildtools/cmdline: fix generated code for IP addresses
    * bus/dpaa: verify strdup return
    * bus/fslmc: verify strdup return
    * bus/vdev: fix devargs in secondary process
    * bus/vdev: verify strdup return
    * ci: update versions of actions in GHA
    * common/cnxk: fix RSS RETA configuration
    * common/cnxk: fix Tx MTU configuration
    * common/cnxk: fix VLAN check for inner header
    * common/cnxk: fix inline device pointer check
    * common/cnxk: fix link config for SDP
    * common/cnxk: fix mbox region copy
    * common/cnxk: fix mbox struct attributes
    * common/cnxk: fix memory leak in CPT init
    * common/cnxk: fix possible out-of-bounds access
    * common/cnxk: remove CN9K inline IPsec FP opcodes
    * common/cnxk: remove dead code
    * common/mlx5: fix calloc parameters
    * common/mlx5: fix duplicate read of general capabilities
    * common/mlx5: fix query sample info capability
    * common/qat: fix legacy flag
    * common/sfc_efx/base: use C11 static assert
    * config: fix CPU instruction set for cross-build
    * crypto/cnxk: fix CN9K ECDH public key verification
    * crypto/qat: fix crash with CCM null AAD pointer
    * cryptodev: remove unused extern variable
    * dma/dpaa2: fix logtype register
    * dma/idxd: verify strdup return
    * dmadev: fix calloc parameters
    * doc: add --latencystats option in testpmd guide
    * doc: add link speeds configuration in features table
    * doc: add traffic manager in features table
    * doc: fix aging poll frequency option in cnxk guide
    * doc: fix commands in eventdev test tool guide
    * doc: fix configuration in baseband 5GNR driver guide
    * doc: fix default IP fragments maximum in programmer guide
    * doc: fix typo in packet framework guide
    * doc: fix typo in profiling guide
    * doc: fix typos in cryptodev overview
    * doc: remove cmdline polling mode deprecation notice
    * doc: update link to Windows DevX in mlx5 guide
    * drivers/net: fix buffer overflow for packet types list
    * dts: fix smoke tests driver regex
    * dts: strip whitespaces from stdout and stderr
    * eal/x86: add AMD vendor check for TSC calibration
    * eal: verify strdup return
    * ethdev: fix NVGRE encap flow action description
    * event/cnxk: fix dequeue timeout configuration
    * event/cnxk: verify strdup return
    * event/dlb2: remove superfluous memcpy
    * eventdev/crypto: fix enqueueing
    * eventdev: fix Doxygen processing of vector struct
    * eventdev: fix calloc parameters
    * eventdev: improve Doxygen comments on configure struct
    * examples/ipsec-secgw: fix Rx queue ID in Rx callback
    * examples/ipsec-secgw: fix cryptodev to SA mapping
    * examples/ipsec-secgw: fix typo in error message
    * examples/ipsec-secgw: fix width of variables
    * examples/l3fwd: fix Rx over not ready port
    * examples/l3fwd: fix Rx queue configuration
    * examples/packet_ordering: fix Rx with reorder mode disabled
    * examples/qos_sched: fix memory leak in args parsing
    * examples/vhost: verify strdup return
    * gro: fix reordering of packets
    * hash: remove some dead code
    * kernel/freebsd: fix module build on FreeBSD 14
    * lib: add newline in logs
    * lib: remove redundant newline from logs
    * lib: use dedicated logtypes and macros
    * ml/cnxk: fix xstats calculation
    * net/af_xdp: fix leak on XSK configuration failure
    * net/af_xdp: fix memzone leak on config failure
    * net/bnx2x: fix calloc parameters
    * net/bnx2x: fix warnings about memcpy lengths
    * net/bnxt: fix 50G and 100G forced speed
    * net/bnxt: fix array overflow
    * net/bnxt: fix backward firmware compatibility
    * net/bnxt: fix deadlock in ULP timer callback
    * net/bnxt: fix null pointer dereference
    * net/bnxt: fix number of Tx queues being created
    * net/bnxt: fix speed change from 200G to 25G on Thor
    * net/bnxt: modify locking for representor Tx
    * net/bonding: fix flow count query
    * net/cnxk: add cookies check for multi-segment offload
    * net/cnxk: fix MTU limit
    * net/cnxk: fix Rx packet format check condition
    * net/cnxk: fix aged flow query
    * net/cnxk: fix buffer size configuration
    * net/cnxk: fix flow RSS configuration
    * net/cnxk: fix indirect mbuf handling in Tx
    * net/cnxk: fix mbuf fields in multi-segment Tx
    * net/cnxk: improve Tx performance for SW mbuf free
    * net/ena/base: fix metrics excessive memory consumption
    * net/ena/base: limit exponential backoff
    * net/ena/base: restructure interrupt handling
    * net/ena: fix fast mbuf free
    * net/ena: fix mbuf double free in fast free mode
    * net/failsafe: fix memory leak in args parsing
    * net/gve: fix DQO for chained descriptors
    * net/hns3: enable PFC for all user priorities
    * net/hns3: fix VF multiple count on one reset
    * net/hns3: fix disable command with firmware
    * net/hns3: fix reset level comparison
    * net/hns3: refactor PF mailbox message struct
    * net/hns3: refactor VF mailbox message struct
    * net/hns3: refactor handle mailbox function
    * net/hns3: refactor send mailbox function
    * net/hns3: remove QinQ insert support for VF
    * net/hns3: support new device
    * net/i40e: remove incorrect 16B descriptor read block
    * net/i40e: remove redundant judgment in flow parsing
    * net/iavf: fix crash on VF start
    * net/iavf: fix memory leak on security context error
    * net/iavf: fix no polling mode switching
    * net/iavf: remove error logs for VLAN offloading
    * net/iavf: remove incorrect 16B descriptor read block
    * net/ice: fix link update
    * net/ice: fix memory leaks
    * net/ice: fix tunnel TSO capabilities
    * net/ice: remove incorrect 16B descriptor read block
    * net/igc: fix timesync disable
    * net/ionic: fix RSS query
    * net/ionic: fix device close
    * net/ionic: fix missing volatile type for cqe pointers
    * net/ixgbe: fix memoy leak after device init failure
    * net/ixgbe: increase VF reset timeout
    * net/ixgbevf: fix RSS init for x550 NICs
    * net/mana: fix memory leak on MR allocation
    * net/mana: handle MR cache expansion failure
    * net/mana: prevent values overflow returned from RDMA layer
    * net/memif: fix crash with Tx burst larger than 255
    * net/memif: fix extra mbuf refcnt update in zero copy Tx
    * net/mlx5/hws: check not supported fields in VXLAN
    * net/mlx5/hws: enable multiple integrity items
    * net/mlx5/hws: fix ESP flow matching validation
    * net/mlx5/hws: fix VLAN inner type
    * net/mlx5/hws: fix VLAN item in non-relaxed mode
    * net/mlx5/hws: fix direct index insert on depend WQE
    * net/mlx5/hws: fix memory access in L3 decapsulation
    * net/mlx5/hws: fix port ID for root table
    * net/mlx5/hws: fix tunnel protocol checks
    * net/mlx5/hws: skip item when inserting rules by index
    * net/mlx5: fix DR context release ordering
    * net/mlx5: fix GENEVE TLV option management
    * net/mlx5: fix GENEVE option item translation
    * net/mlx5: fix HWS meter actions availability
    * net/mlx5: fix HWS registers initialization
    * net/mlx5: fix IP-in-IP tunnels recognition
    * net/mlx5: fix VLAN ID in flow modify
    * net/mlx5: fix VLAN handling in meter split
    * net/mlx5: fix age position in hairpin split
    * net/mlx5: fix async flow create error handling
    * net/mlx5: fix condition of LACP miss flow
    * net/mlx5: fix connection tracking action validation
    * net/mlx5: fix conntrack action handle representation
    * net/mlx5: fix counters map in bonding mode
    * net/mlx5: fix drop action release timing
    * net/mlx5: fix error packets drop in regular Rx
    * net/mlx5: fix flow action template expansion
    * net/mlx5: fix flow configure validation
    * net/mlx5: fix flow counter cache starvation
    * net/mlx5: fix flow tag modification
    * net/mlx5: fix indirect action async job initialization
    * net/mlx5: fix jump action validation
    * net/mlx5: fix meter policy priority
    * net/mlx5: fix modify flex item
    * net/mlx5: fix non-masked indirect list meter translation
    * net/mlx5: fix parameters verification in HWS table create
    * net/mlx5: fix rollback on failed flow configure
    * net/mlx5: fix stats query crash in secondary process
    * net/mlx5: fix sync flow meter action
    * net/mlx5: fix sync meter processing in HWS
    * net/mlx5: fix template clean up of FDB control flow rule
    * net/mlx5: fix use after free when releasing Tx queues
    * net/mlx5: fix warning about copy length
    * net/mlx5: prevent ioctl failure log flooding
    * net/mlx5: prevent querying aged flows on uninit port
    * net/mlx5: remove GENEVE options length limitation
    * net/mlx5: remove device status check in flow creation
    * net/mlx5: remove duplication of L3 flow item validation
    * net/netvsc: fix VLAN metadata parsing
    * net/nfp: fix IPsec data endianness
    * net/nfp: fix NFD3 metadata process
    * net/nfp: fix NFDk metadata process
    * net/nfp: fix Rx descriptor
    * net/nfp: fix Rx memory leak
    * net/nfp: fix calloc parameters
    * net/nfp: fix device close
    * net/nfp: fix device resource freeing
    * net/nfp: fix getting firmware VNIC version
    * net/nfp: fix initialization failure flow
    * net/nfp: fix resource leak for CoreNIC firmware
    * net/nfp: fix resource leak for PF initialization
    * net/nfp: fix resource leak for VF
    * net/nfp: fix resource leak for device initialization
    * net/nfp: fix resource leak for exit of CoreNIC firmware
    * net/nfp: fix resource leak for exit of flower firmware
    * net/nfp: fix resource leak for flower firmware
    * net/nfp: fix switch domain free check
    * net/nfp: fix uninitialized variable
    * net/nfp: free switch domain ID on close
    * net/nfp: verify strdup return
    * net/sfc: fix calloc parameters
    * net/softnic: fix include of log library
    * net/tap: do not overwrite flow API errors
    * net/tap: fix traffic control handle calculation
    * net/thunderx: fix DMAC control register update
    * net/virtio: fix vDPA device init advertising control queue
    * net/virtio: remove duplicate queue xstats
    * net/vmxnet3: fix initialization on FreeBSD
    * net/vmxnet3: ignore Rx queue interrupt setup on FreeBSD
    * net: add macros for VLAN metadata parsing
    * net: fix TCP/UDP checksum with padding data
    * pipeline: fix calloc parameters
    * rawdev: fix calloc parameters
    * rcu: fix acked token in debug log
    * rcu: use atomic operation on acked token
    * regexdev: fix logtype register
    * telemetry: fix connected clients count
    * telemetry: fix empty JSON dictionaries
    * test/cfgfile: fix typo in error messages
    * test/event: fix crash in Tx adapter freeing
    * test/event: skip test if no driver is present
    * test/mbuf: fix external mbuf case with assert enabled
    * test/power: fix typo in error message
    * test: assume C source files are UTF-8 encoded
    * test: do not count skipped tests as executed
    * test: fix probing in secondary process
    * test: verify strdup return
    * vdpa/mlx5: fix queue enable drain CQ
    * version: 23.11.1-rc2
    * vhost: fix VDUSE device destruction failure
    * vhost: fix deadlock during vDPA SW live migration
    * vhost: fix memory leak in Virtio Tx split path
    * vhost: fix virtqueue access check in VDUSE setup
    * vhost: fix virtqueue access check in datapath
    * vhost: fix virtqueue access check in vhost-user setup
- Fix macro aarch64_machine for thunderx and aarch64 build
- Drop building KMP as there are no Kernel modules available.
- Drop the below patches as KNI is removed from DPDK repository
    * 0002-SLE15-SP3-compatibility-patch-for-kni.patch
    * kni-fix-build-with-Linux-6.10.patch
    * kni-fix-build-with-Linux-6.8.patch
    * preamble 
- Updated the below patch for DPDK v23.11
    * 0001-fix-cpu-compatibility.patch

OBS-URL: https://build.opensuse.org/package/show/network/dpdk?expand=0&rev=164
This commit is contained in:
Dirk Mueller 2024-09-02 16:59:08 +00:00 committed by Git OBS Bridge
commit 928144f175
15 changed files with 2683 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

View File

@ -0,0 +1,69 @@
From e2950fec9cd9c235a7847ed97b6914174857bf93 Mon Sep 17 00:00:00 2001
From: "mvarlese@suse.de" <mvarlese@suse.de>
Date: Wed, 29 Apr 2020 12:24:16 +0200
Subject: [PATCH] fix cpu compatibility
Added 0001-fix-cpu-compatibility.patch to address issue with older CPUs (bsc#1125961, bsc#1099474)
Updated 2024-08-26 for version 23.11
diff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c
index 7974b27295..25eec8bf6e 100644
--- a/drivers/bus/vdev/vdev.c
+++ b/drivers/bus/vdev/vdev.c
@@ -51,7 +51,11 @@ static struct vdev_custom_scans vdev_custom_scans =
static rte_spinlock_t vdev_custom_scan_lock = RTE_SPINLOCK_INITIALIZER;
/* register a driver */
-void
+#if defined(__x86_64__) || defined(__i386__)
+void __attribute__((target ("sse2")))
+#else
+ void
+#endif
rte_vdev_register(struct rte_vdev_driver *driver)
{
TAILQ_INSERT_TAIL(&vdev_driver_list, driver, next);
diff --git a/lib/eal/common/eal_common_bus.c b/lib/eal/common/eal_common_bus.c
index acac14131a..a19f5e5431 100644
--- a/lib/eal/common/eal_common_bus.c
+++ b/lib/eal/common/eal_common_bus.c
@@ -22,7 +22,11 @@ rte_bus_name(const struct rte_bus *bus)
return bus->name;
}
-void
+#if defined(__x86_64__) || defined(__i386__)
+void __attribute__((target ("sse2")))
+#else
+ void
+#endif
rte_bus_register(struct rte_bus *bus)
{
RTE_VERIFY(bus);
diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h
index c1ba32d00e..525a575c08 100644
--- a/lib/eal/include/rte_common.h
+++ b/lib/eal/include/rte_common.h
@@ -208,8 +208,20 @@ typedef uint16_t unaligned_uint16_t;
*/
#ifndef RTE_INIT_PRIO /* Allow to override from EAL */
#ifndef RTE_TOOLCHAIN_MSVC
+#if defined(__x86_64__) || defined(__i386__)
#define RTE_INIT_PRIO(func, prio) \
-static void __attribute__((constructor(RTE_PRIO(prio)), used)) func(void)
+static void \
+ __attribute__((constructor(RTE_PRIO(prio)), used)) \
+ __attribute__((target ("sse2"))) \
+ __attribute__((target ("no-sse3"))) \
+ __attribute__((target ("no-sse4"))) \
+ func(void)
+#else
+#define RTE_INIT_PRIO(func, prio) \
+static void \
+ __attribute__((constructor(RTE_PRIO(prio)), used)) \
+ func(void)
+#endif
#else
/* definition from the Microsoft CRT */
typedef int(__cdecl *_PIFV)(void);

View File

@ -0,0 +1,36 @@
From 430a4b50f2f7e5f21c7c2f81849588c575018501 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jaime=20Caama=C3=B1o=20Ruiz?= <jcaamano@suse.com>
Date: Mon, 21 Sep 2020 14:50:13 +0200
Subject: [PATCH] SLE15 SP3 compatibility patch for kni
Add patch to resolve build error reported in Staging:E project
where a kernel backport (jsc#SLE-13536) introduced backward
incompatible changes to the API that break kni module build
* 0001-SLE15-SP3-compatibility-patch-for-kni.patch
Updated 2023-02-26 for version 22.11
diff --git a/kernel/linux/kni/compat.h b/kernel/linux/kni/compat.h
index 3a86d12bbc..66d1afd944 100644
--- a/kernel/linux/kni/compat.h
+++ b/kernel/linux/kni/compat.h
@@ -14,7 +14,10 @@
#define SLE_VERSION(a, b, c) KERNEL_VERSION(a, b, c)
#endif
#ifdef CONFIG_SUSE_KERNEL
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 57))
+#if (defined(CONFIG_SUSE_VERSION) && CONFIG_SUSE_VERSION == 15 && \
+ defined(CONFIG_SUSE_PATCHLEVEL) && CONFIG_SUSE_PATCHLEVEL == 3)
+#define SLE_VERSION_CODE SLE_VERSION(15, 3, 0)
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 57))
/* SLES12SP3 is at least 4.4.57+ based */
#define SLE_VERSION_CODE SLE_VERSION(12, 3, 0)
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 28))
@@ -132,6 +135,7 @@
#endif
#if KERNEL_VERSION(5, 6, 0) <= LINUX_VERSION_CODE || \
+ (SLE_VERSION_CODE && SLE_VERSION_CODE == SLE_VERSION(15, 3, 0)) || \
(defined(RHEL_RELEASE_CODE) && \
RHEL_RELEASE_VERSION(8, 3) <= RHEL_RELEASE_CODE) || \
(defined(CONFIG_SUSE_KERNEL) && defined(HAVE_ARG_TX_QUEUE))

21
_constraints Normal file
View File

@ -0,0 +1,21 @@
<?xml version="1.0"?>
<constraints>
<overwrite>
<conditions>
<arch>i586</arch>
<arch>x86_64</arch>
</conditions>
<hardware>
<cpu>
<flag>mmx</flag>
<flag>sse</flag>
<flag>sse2</flag>
<flag>ssse3</flag>
<flag>sse4_2</flag>
</cpu>
<disk>
<size unit="G">8</size>
</disk>
</hardware>
</overwrite>
</constraints>

3
_multibuild Normal file
View File

@ -0,0 +1,3 @@
<multibuild>
<package>thunderx</package>
</multibuild>

BIN
dpdk-22.11.1.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

3
dpdk-22.11.5.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:916805aee46246b81f71f831221231ef3de9c1f70223d179621980ec5d1bdf73
size 15617920

3
dpdk-22.11.6.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b9291448ca0e6beebbafde99d9ba8376722d5e1482e79118b6328f69e9a8e9bf
size 15626012

BIN
dpdk-23.11.1.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

2091
dpdk.changes Normal file

File diff suppressed because it is too large Load Diff

310
dpdk.spec Normal file
View File

@ -0,0 +1,310 @@
#
# spec file
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
# needssslcertforbuild
%define flavor @BUILD_FLAVOR@%{nil}
%define aarch64_machine armv8-a
%define exclusive_arch aarch64 x86_64 ppc64le
%define name_tag %{nil}
%define summary_tag %{nil}
%if "%{flavor}" == "thunderx"
%define name_tag -thunderx
%define summary_tag (thunderx)
%define exclusive_arch aarch64
%endif
# http://doc.dpdk.org/guides-22.11/linux_gsg/build_dpdk.html#adjusting-build-options
%define platform generic
%define machine auto
%ifarch aarch64
%define machine %{aarch64_machine}
%endif
# This is in sync with <src>/ABI_VERSION
# TODO: automate this sync
%define maj 24
%define min 0
#%%define lname libdpdk-%%{maj}_%%{min}
%define lname libdpdk-%{maj}
# Add option to build without examples
%bcond_without examples
# Add option to build without tools
%bcond_without tools
#
Name: dpdk%{name_tag}
Version: 23.11.1
Release: 0
Summary: Set of libraries and drivers for fast packet processing
License: BSD-3-Clause AND GPL-2.0-only AND LGPL-2.1-only
Group: System/Libraries
URL: https://www.dpdk.org/
Source: https://fast.dpdk.org/rel/dpdk-%{version}.tar.xz
# PATCH-FIX-OPENSUSE PATCH-FEATURE-UPSTREAM
Patch0: 0001-fix-cpu-compatibility.patch
BuildRequires: binutils
BuildRequires: doxygen
BuildRequires: fdupes
BuildRequires: kernel-syms
BuildRequires: libfdt-devel
BuildRequires: meson >= 0.53.2
BuildRequires: modutils
BuildRequires: patchelf
BuildRequires: pesign-obs-integration
BuildRequires: pkgconfig
BuildRequires: python3
BuildRequires: python3-Sphinx
BuildRequires: python3-pyelftools >= 0.22
BuildRequires: rdma-core-devel
BuildRequires: pkgconfig(jansson)
BuildRequires: pkgconfig(libcrypto)
BuildRequires: pkgconfig(libelf)
BuildRequires: pkgconfig(libmnl)
BuildRequires: pkgconfig(libpcap)
BuildRequires: pkgconfig(numa)
BuildRequires: pkgconfig(zlib)
Conflicts: dpdk-any
Provides: dpdk-any = %{version}
Obsoletes: dpdk-kmp-trace < %{version}
ExclusiveArch: %{exclusive_arch}
%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150400
# https://bugzilla.opensuse.org/show_bug.cgi?id=1196511
BuildRequires: pkgconfig(libbpf)
%endif
%description
The Data Plane Development Kit is a set of libraries and drivers for
fast packet processing in the user space.
%package devel
Summary: Data Plane Development Kit development files %{summary_tag}
Group: Development/Libraries/C and C++
Requires: %{lname} = %{version}
Conflicts: dpdk-any-devel
Provides: dpdk-any-devel = %{version}
%description devel
This package contains the headers and other files needed for developing
applications with the Data Plane Development Kit.
%package devel-static
Summary: Data Plane Development Kit static development files %{summary_tag}
Group: Development/Libraries/C and C++
Requires: %{name}-devel = %{version}
%description devel-static
This package contains the static library files needed for developing
applications with the Data Plane Development Kit.
%package -n %{lname}
Summary: Data Plane Development Kit runtime libraries %{summary_tag}
Group: Development/Libraries/C and C++
Provides: %{lname}-any = %{version}
%description -n %{lname}
This package contains the runtime libraries needed for 3rd party application
to use the Data Plane Development Kit.
%package doc
Summary: Data Plane Development Kit API documentation %{summary_tag}
Group: System/Libraries
Conflicts: dpdk-any-doc
Provides: dpdk-any-doc = %{version}
BuildArch: noarch
%description doc
API programming documentation for the Data Plane Development Kit.
%if %{with tools}
%package tools
Summary: Tools for setting up Data Plane Development Kit environment %{summary_tag}
Group: System/Libraries
Requires: %{name} = %{version}
Requires: findutils
Requires: iproute
Requires: kmod
Requires: pciutils
Conflicts: dpdk-any-tools
Provides: dpdk-any-tools = %{version}
%description tools
This package contains tools for setting up Data Plane Development Kit environment
%endif
%if %{with examples}
%package examples
Summary: Data Plane Development Kit example applications %{summary_tag}
Group: System/Libraries
BuildRequires: libvirt-devel
Conflicts: dpdk-any-examples
Provides: dpdk-any-examples = %{version}
%description examples
Example applications utilizing the Data Plane Development Kit, such
as L2 and L3 forwarding.
%endif
%define sdkdir %{_datadir}/dpdk
%define docdir %{_docdir}/dpdk
%define incdir %{_includedir}/dpdk
%define pmddir %{_libdir}/dpdk-pmds-%{maj}.%{min}
%prep
# can't use %%{name} because of dpdk-thunderx
%setup -n dpdk-stable-%{version}
%if 0%{?suse_version} > 1600
%autopatch -p1
%else
# grr, no fs.copyfile() in the old meson in SLE (but it has old enough kernel).
%autopatch -p1 -M 99
%endif
# Skip not supported examples
sed -i "/performance-thread/d" examples/meson.build
# Verify ABI
[ "$(cat ABI_VERSION)" = "%{maj}.%{min}" ] || exit 1
%build
%define _vpath_builddir "build-%{_target_cpu}-$flavor"
%ifarch x86_64
export CFLAGS="%{optflags} -U_FORTIFY_SOURCE -msse4"
%endif
examples="all"
for flavor in %{flavors_to_build}; do
%meson --includedir=%{incdir} \
-Ddefault_library=shared \
-Denable_docs=true \
-Db_lto=true \
%if %{with examples}
-Dexamples="$examples" \
%endif
-Dplatform="%{platform}" \
-Dcpu_instruction_set=%{machine} \
-Denable_kmods=true \
-Ddrivers_install_subdir=%{pmddir} \
-Dkernel_dir="%{_prefix}/src/linux-obj/%{_target_cpu}/$flavor"
%meson_build
# Make sure examples are only built once
examples=""
done
%install
examples="%{?with_examples:all}"
for flavor in %{flavors_to_build}; do
%meson_install
# Also install the example binaries
if [ ! -z "$examples" ]; then
for f in %{_vpath_builddir}/examples/dpdk-*; do
bn=$(basename "$f")
if [ -f "$f" ] ; then
install -Dm 0755 ${f} "%{buildroot}%{_bindir}/${bn/dpdk-/dpdk_example_}"
patchelf --remove-rpath "%{buildroot}%{_bindir}/${bn/dpdk-/dpdk_example_}"
fi
done
fi
examples=""
done
# Fix documentation
mkdir -p %{buildroot}%docdir
mv %{buildroot}%{_datadir}/doc/dpdk %{buildroot}%docdir
rm -r %{buildroot}/%docdir/dpdk/html/.doctrees
# Fix man directory
rm -r %{buildroot}%{_mandir}/man3/*
# driver .so files often depend upon the bus drivers for their connect bus,
# e.g. ixgbe depends on librte_bus_pci. This means that the bus drivers need
# to be in the library path, so symlink the drivers from the main lib directory
# Fix broken symlink created by buildtools/symlink-drivers-solibs.sh
for f in %{buildroot}/%{pmddir}/*.so.*; do
bn=$(basename ${f})
ln -s %{pmddir}/${bn} %{buildroot}%{_libdir}/${bn}
done
%if ! %{with tools}
# Remove tools if not needed
for tool in dpdk-devbind.py dpdk-pmdinfo.py dpdk-telemetry.py dpdk-hugepages.py; do
rm -rf "%{buildroot}%{_bindir}/$tool"
done
%else
# Add compatibility symlink
mkdir -p %{buildroot}%{_sbindir}
ln -s %{_bindir}/dpdk-devbind.py %{buildroot}%{_sbindir}/dpdk_nic_bind
%endif
# Fix interpreter
%python3_fix_shebang
%python3_fix_shebang_path %{buildroot}%{_datadir}/%{name}/examples/ipsec-secgw/test/*
%python3_fix_shebang_path %{buildroot}%{_datadir}/%{name}/examples/pipeline/examples/*
# Remove duplicates
%fdupes %{buildroot}/%docdir
%fdupes %{buildroot}/%{sdkdir}/examples
# Fix broken symlink (yes with * in its name)
rm -v "%{buildroot}%{_libdir}/librte_*.so*"
%post devel -p /sbin/ldconfig
%postun devel -p /sbin/ldconfig
%post -n %{lname} -p /sbin/ldconfig
%postun -n %{lname} -p /sbin/ldconfig
%files
%{_bindir}/dpdk-dumpcap
%{_bindir}/dpdk-pdump
%{_bindir}/dpdk-proc-info
%{_bindir}/dpdk-test*
%{_bindir}/dpdk-graph*
%files -n %{lname}
%license license/gpl-2.0.txt license/lgpl-2.1.txt license/bsd-3-clause.txt
%{_libdir}/*.so.*
%dir %{pmddir}
%{pmddir}/*.so.*
%files devel
#BSD
%{incdir}/
%{sdkdir}/
%{pmddir}/*.so
%{_libdir}/*.so
%{_libdir}/pkgconfig/libdpdk*.pc
%if %{with examples}
%exclude %{sdkdir}/examples/
%endif
%files devel-static
#BSD
%{_libdir}/*.a
%files doc
#BSD
%doc %docdir
%if %{with tools}
%files tools
%{_sbindir}/dpdk_nic_bind
%{_bindir}/dpdk-*.py
%endif
%if %{with examples}
%files examples
%{_bindir}/dpdk_example_*
%doc %{sdkdir}/examples
%endif
%changelog

View File

@ -0,0 +1,68 @@
From: Jiri Slaby <jslaby@suse.cz>
Date: Tue, 16 Jul 2024 10:40:26 +0200
Subject: kni: fix build with Linux 6.10
Patch-mainline: submitted to dev@dpdk.org, <20240716084414.115852-1-jslaby@suse.cz>
References: kernel 6.10
6.10 removed the "support" (it was never supported [1]) of separate
source and build dirs for out of tree modules.
KNI uses "src=" hack for that purpose.
Instead, copy sources to the build dir and don't rely upon the
unsupported...
Intended esp. for stable/22.11. It should go wherever kni is still in
the tree.
[1] https://lore.kernel.org/all/CAK7LNAQ47bZpE6c6Yoz-jQS78uU611oZwU8bH+7e=p5zSyADJw@mail.gmail.com/
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
kernel/linux/kni/meson.build | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/kernel/linux/kni/meson.build b/kernel/linux/kni/meson.build
index 4c90069e..39ca2ade 100644
--- a/kernel/linux/kni/meson.build
+++ b/kernel/linux/kni/meson.build
@@ -11,8 +11,8 @@ if run_cmd.stdout().contains('txqueue') == true
kmod_cflags = '-DHAVE_ARG_TX_QUEUE'
endif
-
-kni_mkfile = custom_target('rte_kni_makefile',
+kni_deps = []
+kni_deps += custom_target('rte_kni_makefile',
output: 'Makefile',
command: ['touch', '@OUTPUT@'])
@@ -22,12 +22,15 @@ kni_sources = files(
'Kbuild',
)
+foreach file : kni_sources
+ kni_deps += fs.copyfile(file)
+endforeach
+
custom_target('rte_kni',
input: kni_sources,
output: 'rte_kni.ko',
command: ['make', '-j4', '-C', kernel_build_dir,
'M=' + meson.current_build_dir(),
- 'src=' + meson.current_source_dir(),
' '.join(['MODULE_CFLAGS=', kmod_cflags,'-include '])
+ dpdk_source_root + '/config/rte_config.h' +
' -I' + dpdk_source_root + '/lib/eal/include' +
@@ -35,7 +38,7 @@ custom_target('rte_kni',
' -I' + dpdk_build_root +
' -I' + meson.current_source_dir(),
'modules'] + cross_args,
- depends: kni_mkfile,
+ depends: kni_deps,
install: install,
install_dir: kernel_install_dir,
build_by_default: get_option('enable_kmods'))
--
2.45.2

View File

@ -0,0 +1,45 @@
From: Jiri Slaby <jslaby@suse.cz>
Date: Tue, 12 Mar 2024 09:49:14 +0100
Subject: kni: fix build with Linux 6.8
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-repo: git://dpdk.org/dpdk-stable
Git-commit: 15658afda05f50e69805b891ebb4d2d5c1966d44
Patch-mainline: yes
References: kernel 6.8
strlcpy() was removed in commit d26270061ae6 (string: Remove strlcpy()), use
strscpy() instead.
The patches fixes this:
kernel/linux/kni/kni_net.c: In function kni_get_drvinfo:
kernel/linux/kni/kni_net.c:835:9: error: implicit declaration of function strlcpy; did you mean strscpy?
Intended esp. for stable/22.11. It should go wherever kni is still in
the tree.
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Acked-by: Luca Boccassi <bluca@debian.org>
---
kernel/linux/kni/kni_net.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/linux/kni/kni_net.c b/kernel/linux/kni/kni_net.c
index 779ee345..c115a728 100644
--- a/kernel/linux/kni/kni_net.c
+++ b/kernel/linux/kni/kni_net.c
@@ -832,8 +832,8 @@ static const struct net_device_ops kni_net_netdev_ops = {
static void kni_get_drvinfo(struct net_device *dev,
struct ethtool_drvinfo *info)
{
- strlcpy(info->version, KNI_VERSION, sizeof(info->version));
- strlcpy(info->driver, "kni", sizeof(info->driver));
+ strscpy(info->version, KNI_VERSION, sizeof(info->version));
+ strscpy(info->driver, "kni", sizeof(info->driver));
}
static const struct ethtool_ops kni_net_ethtool_ops = {
--
2.45.2

4
preamble Normal file
View File

@ -0,0 +1,4 @@
Requires: kernel-%1
Enhances: kernel-%1
Supplements: packageand(kernel-%1:%{-n*})
Conflicts: dpdk-any-kmp