From 118290c00ae4713b66deddb8194757041ac57a57 Mon Sep 17 00:00:00 2001 From: Nicolas Benes Date: Sun, 22 Jan 2023 00:20:21 +0100 Subject: [PATCH 1/3] dpdk: 22.07 -> 22.11.1 Latest LTS release. https://doc.dpdk.org/guides-22.11/rel_notes/release_22_11.html --- pkgs/os-specific/linux/dpdk/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/dpdk/default.nix b/pkgs/os-specific/linux/dpdk/default.nix index 1f53dc8e8343..16bf9605726d 100644 --- a/pkgs/os-specific/linux/dpdk/default.nix +++ b/pkgs/os-specific/linux/dpdk/default.nix @@ -9,14 +9,14 @@ let mod = kernel != null; - dpdkVersion = "22.07"; + dpdkVersion = "22.11.1"; in stdenv.mkDerivation rec { pname = "dpdk"; version = "${dpdkVersion}" + lib.optionalString mod "-${kernel.version}"; src = fetchurl { url = "https://fast.dpdk.org/rel/dpdk-${dpdkVersion}.tar.xz"; - sha256 = "sha256-n2Tf3gdf21cIy2Leg4uP+4kVdf7R4dKusma6yj38m+o="; + sha256 = "sha256-3gdkZfcXSg1ScUuQcuSDenJrqsgtj+fcZEytXIz3TUw="; }; nativeBuildInputs = [ From 203e5461b25add434893bee7ba8bdfeeffffebf0 Mon Sep 17 00:00:00 2001 From: Nicolas Benes Date: Sun, 22 Jan 2023 00:35:37 +0100 Subject: [PATCH 2/3] dpdk: simplify optimization for CPU family Make it easier optimize DPDK for a CPU family. The conservative default remains (e.g. nehalem for x86_64), but a user may override it for better utilization of recent CPU models, e.g. `{ machine = "x86-64-v4"; }` for AVX512 support. --- pkgs/os-specific/linux/dpdk/default.nix | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/linux/dpdk/default.nix b/pkgs/os-specific/linux/dpdk/default.nix index 16bf9605726d..78acb45bb3c7 100644 --- a/pkgs/os-specific/linux/dpdk/default.nix +++ b/pkgs/os-specific/linux/dpdk/default.nix @@ -5,7 +5,13 @@ , libbsd, numactl, libbpf, zlib, libelf, jansson, openssl, libpcap, rdma-core , doxygen, python3, pciutils , withExamples ? [] -, shared ? false }: +, shared ? false +, machine ? ( + if stdenv.isx86_64 then "nehalem" + else if stdenv.isAarch64 then "generic" + else null + ) +}: let mod = kernel != null; @@ -63,8 +69,7 @@ in stdenv.mkDerivation rec { # kni kernel driver is currently not compatble with 5.11 ++ lib.optional (mod && kernel.kernelOlder "5.11") "-Ddisable_drivers=kni" ++ lib.optional (!shared) "-Ddefault_library=static" - ++ lib.optional stdenv.isx86_64 "-Dmachine=nehalem" - ++ lib.optional stdenv.isAarch64 "-Dmachine=generic" + ++ lib.optional (machine != null) "-Dmachine=${machine}" ++ lib.optional mod "-Dkernel_dir=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" ++ lib.optional (withExamples != []) "-Dexamples=${builtins.concatStringsSep "," withExamples}"; From 26aa60713ee4fc010cf84fd7e1e474615fd272cc Mon Sep 17 00:00:00 2001 From: Nicolas Benes Date: Sun, 22 Jan 2023 02:01:57 +0100 Subject: [PATCH 3/3] pktgen: 22.04.1 -> 22.07.1 --- pkgs/os-specific/linux/pktgen/default.nix | 31 +++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/pkgs/os-specific/linux/pktgen/default.nix b/pkgs/os-specific/linux/pktgen/default.nix index 0ddda99bf592..20db1cdd74f9 100644 --- a/pkgs/os-specific/linux/pktgen/default.nix +++ b/pkgs/os-specific/linux/pktgen/default.nix @@ -1,19 +1,40 @@ -{ stdenv, lib, fetchFromGitHub, meson, ninja, pkg-config -, dpdk, libbsd, libpcap, lua5_3, numactl, util-linux -, gtk2, which, withGtk ? false +{ stdenv +, lib +, fetchFromGitHub +, fetchpatch +, meson +, ninja +, pkg-config +, dpdk +, libbsd +, libpcap +, lua5_3 +, numactl +, util-linux +, gtk2 +, which +, withGtk ? false }: stdenv.mkDerivation rec { pname = "pktgen"; - version = "22.04.1"; + version = "22.07.1"; src = fetchFromGitHub { owner = "pktgen"; repo = "Pktgen-DPDK"; rev = "pktgen-${version}"; - sha256 = "0gbag98i2jq0p2hpvfgc3fiqy2sark1dm72hla4sxmn3gljy3p70"; + sha256 = "sha256-wBLGwVdn3ymUTVv7J/kbQYz4WNIgV246PHg51+FStUo="; }; + patches = [ + (fetchpatch { + # Ealier DPDK deprecated some macros, which were finally removed in >= 22.11 + url = "https://github.com/pktgen/Pktgen-DPDK/commit/089ef94ac04629f7380f5e618443bcacb2cef5ab.patch"; + sha256 = "sha256-ITU/dIfu7QPpdIVYuCuDhDG9rVF+n8i1YYn9bFmQUME="; + }) + ]; + nativeBuildInputs = [ meson ninja pkg-config ]; buildInputs = [