From c038e2ade96eb36e4b122069ed445a6c0aa8e9c1 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Nov 15 2022 07:02:37 +0000 Subject: import iproute-5.18.0-1.el9 --- diff --git a/.gitignore b/.gitignore index 7213939..b0528ef 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/iproute2-5.15.0.tar.xz +SOURCES/iproute2-5.18.0.tar.xz diff --git a/.iproute.metadata b/.iproute.metadata index 8491aea..aa9e569 100644 --- a/.iproute.metadata +++ b/.iproute.metadata @@ -1 +1 @@ -6cae5b261051a5f54596fea6647bf76cb87515a0 SOURCES/iproute2-5.15.0.tar.xz +575ff5bba13c6cb4d9a8e5ecad1d691faecfdee6 SOURCES/iproute2-5.18.0.tar.xz diff --git a/SOURCES/0001-configure-fix-parsing-issue-on-include_dir-option.patch b/SOURCES/0001-configure-fix-parsing-issue-on-include_dir-option.patch deleted file mode 100644 index 91b2a60..0000000 --- a/SOURCES/0001-configure-fix-parsing-issue-on-include_dir-option.patch +++ /dev/null @@ -1,74 +0,0 @@ -From cef782ca658d695c5ca2d174ba1f89cba6bd84e5 Mon Sep 17 00:00:00 2001 -Message-Id: -From: Andrea Claudi -Date: Wed, 24 Nov 2021 11:28:08 +0100 -Subject: [PATCH] configure: fix parsing issue on include_dir option - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2009355 -Upstream Status: iproute2.git commit 1d819dcc - -commit 1d819dcc741e25958190e31f8186c940713fa0a8 -Author: Andrea Claudi -Date: Thu Oct 14 10:50:49 2021 +0200 - - configure: fix parsing issue on include_dir option - - configure is stuck in an endless loop if '--include_dir' option is used - without a value: - - $ ./configure --include_dir - ./configure: line 506: shift: 2: shift count out of range - ./configure: line 506: shift: 2: shift count out of range - [...] - - Fix it splitting 'shift 2' into two consecutive shifts, and making the - second one conditional to the number of remaining arguments. - - A check is also provided after the while loop to verify the include dir - exists; this avoid to produce an erroneous configuration. - - Fixes: a9c3d70d902a ("configure: add options ability") - Signed-off-by: Andrea Claudi - Acked-by: Phil Sutter - Signed-off-by: David Ahern ---- - configure | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) - -diff --git a/configure b/configure -index 7f4f3bd9..ea9051ab 100755 ---- a/configure -+++ b/configure -@@ -485,7 +485,7 @@ usage() - { - cat < Path to iproute2 include dir - --libbpf_dir Path to libbpf DESTDIR - --libbpf_force Enable/disable libbpf by force. Available options: - on: require link against libbpf, quit config if no libbpf support -@@ -502,8 +502,9 @@ else - while true; do - case "$1" in - --include_dir) -- INCLUDE=$2 -- shift 2 ;; -+ shift -+ INCLUDE="$1" -+ [ "$#" -gt 0 ] && shift ;; - --libbpf_dir) - LIBBPF_DIR="$2" - shift 2 ;; -@@ -523,6 +524,8 @@ else - done - fi - -+[ -d "$INCLUDE" ] || usage 1 -+ - echo "# Generated config based on" $INCLUDE >$CONFIG - quiet_config >> $CONFIG - --- -2.31.1 - diff --git a/SOURCES/0002-configure-fix-parsing-issue-on-libbpf_dir-option.patch b/SOURCES/0002-configure-fix-parsing-issue-on-libbpf_dir-option.patch deleted file mode 100644 index 437af4e..0000000 --- a/SOURCES/0002-configure-fix-parsing-issue-on-libbpf_dir-option.patch +++ /dev/null @@ -1,79 +0,0 @@ -From c82a4d170e04b84aa0a630ed8142ec4220efaff9 Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: -From: Andrea Claudi -Date: Wed, 24 Nov 2021 11:28:08 +0100 -Subject: [PATCH] configure: fix parsing issue on libbpf_dir option - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2009355 -Upstream Status: iproute2.git commit 48c379bc - -commit 48c379bc2afd43b3246f68ed46475f5318b1218f -Author: Andrea Claudi -Date: Thu Oct 14 10:50:50 2021 +0200 - - configure: fix parsing issue on libbpf_dir option - - configure is stuck in an endless loop if '--libbpf_dir' option is used - without a value: - - $ ./configure --libbpf_dir - ./configure: line 515: shift: 2: shift count out of range - ./configure: line 515: shift: 2: shift count out of range - [...] - - Fix it splitting 'shift 2' into two consecutive shifts, and making the - second one conditional to the number of remaining arguments. - - A check is also provided after the while loop to verify the libbpf dir - exists; also, as LIBBPF_DIR does not have a default value, configure bails - out if the user does not specify a value after --libbpf_dir, thus avoiding - to produce an erroneous configuration. - - Fixes: 7ae2585b865a ("configure: convert LIBBPF environment variables to command-line options") - Signed-off-by: Andrea Claudi - Acked-by: Phil Sutter - Signed-off-by: David Ahern ---- - configure | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) - -diff --git a/configure b/configure -index ea9051ab..0f304206 100755 ---- a/configure -+++ b/configure -@@ -486,7 +486,7 @@ usage() - cat < Path to iproute2 include dir -- --libbpf_dir Path to libbpf DESTDIR -+ --libbpf_dir Path to libbpf DESTDIR - --libbpf_force Enable/disable libbpf by force. Available options: - on: require link against libbpf, quit config if no libbpf support - off: disable libbpf probing -@@ -506,8 +506,9 @@ else - INCLUDE="$1" - [ "$#" -gt 0 ] && shift ;; - --libbpf_dir) -- LIBBPF_DIR="$2" -- shift 2 ;; -+ shift -+ LIBBPF_DIR="$1" -+ [ "$#" -gt 0 ] && shift ;; - --libbpf_force) - if [ "$2" != 'on' ] && [ "$2" != 'off' ]; then - usage 1 -@@ -525,6 +526,9 @@ else - fi - - [ -d "$INCLUDE" ] || usage 1 -+if [ "${LIBBPF_DIR-unused}" != "unused" ]; then -+ [ -d "$LIBBPF_DIR" ] || usage 1 -+fi - - echo "# Generated config based on" $INCLUDE >$CONFIG - quiet_config >> $CONFIG --- -2.31.1 - diff --git a/SOURCES/0003-configure-fix-parsing-issue-with-more-than-one-value.patch b/SOURCES/0003-configure-fix-parsing-issue-with-more-than-one-value.patch deleted file mode 100644 index 12f293b..0000000 --- a/SOURCES/0003-configure-fix-parsing-issue-with-more-than-one-value.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 7d7655d0cc66288959b41f36ee1c52043cd86b79 Mon Sep 17 00:00:00 2001 -Message-Id: <7d7655d0cc66288959b41f36ee1c52043cd86b79.1637749821.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Wed, 24 Nov 2021 11:28:08 +0100 -Subject: [PATCH] configure: fix parsing issue with more than one value per - option - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2009355 -Upstream Status: iproute2.git commit c330d097 - -commit c330d0979440a1dec4a436fd742bb6e28d195526 -Author: Andrea Claudi -Date: Thu Oct 14 10:50:51 2021 +0200 - - configure: fix parsing issue with more than one value per option - - With commit a9c3d70d902a ("configure: add options ability") users are no - more able to provide wrong command lines like: - - $ ./configure --include_dir foo bar - - The script simply bails out when user provides more than one value for a - single option. However, in doing so, it breaks backward compatibility with - some packaging system, which expects unknown options to be ignored. - - Commit a3272b93725a ("configure: restore backward compatibility") fix this - issue, but makes it possible again for users to provide wrong command lines - such as the one above. - - This fixes the issue simply ignoring autoconf-like options such as - '--opt=value'. - - Fixes: a3272b93725a ("configure: restore backward compatibility") - Signed-off-by: Andrea Claudi - Acked-by: Phil Sutter - Signed-off-by: David Ahern ---- - configure | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/configure b/configure -index 0f304206..9ec19a5b 100755 ---- a/configure -+++ b/configure -@@ -517,10 +517,12 @@ else - shift 2 ;; - -h | --help) - usage 0 ;; -+ --*) -+ shift ;; - "") - break ;; - *) -- shift 1 ;; -+ usage 1 ;; - esac - done - fi --- -2.31.1 - diff --git a/SOURCES/0004-configure-simplify-options-parsing.patch b/SOURCES/0004-configure-simplify-options-parsing.patch deleted file mode 100644 index 743324e..0000000 --- a/SOURCES/0004-configure-simplify-options-parsing.patch +++ /dev/null @@ -1,114 +0,0 @@ -From 825f5869248638159d30aff05b5d81246dc8a208 Mon Sep 17 00:00:00 2001 -Message-Id: <825f5869248638159d30aff05b5d81246dc8a208.1637749821.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Wed, 24 Nov 2021 11:28:08 +0100 -Subject: [PATCH] configure: simplify options parsing - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2009355 -Upstream Status: iproute2.git commit 99245d17 - -commit 99245d1741a85e4397973782578d4a78673eb348 -Author: Andrea Claudi -Date: Thu Oct 14 10:50:52 2021 +0200 - - configure: simplify options parsing - - This commit simplifies options parsing moving all the code not related to - parsing out of the case statement. - - - The conditional shift after the assignments is moved right after the - case, reducing code duplication. - - The semantic checks on the LIBBPF_FORCE value is moved after the loop - like we already did for INCLUDE and LIBBPF_DIR. - - Finally, the loop condition is changed to check remaining arguments, thus - making it possible to get rid of the null string case break. - - As a bonus, now the help message states that on or off should follow - --libbpf_force - - Signed-off-by: Andrea Claudi - Acked-by: Phil Sutter - Signed-off-by: David Ahern ---- - configure | 37 ++++++++++++++++++------------------- - 1 file changed, 18 insertions(+), 19 deletions(-) - -diff --git a/configure b/configure -index 9ec19a5b..26e06eb8 100755 ---- a/configure -+++ b/configure -@@ -485,12 +485,12 @@ usage() - { - cat < Path to iproute2 include dir -- --libbpf_dir Path to libbpf DESTDIR -- --libbpf_force Enable/disable libbpf by force. Available options: -- on: require link against libbpf, quit config if no libbpf support -- off: disable libbpf probing -- -h | --help Show this usage info -+ --include_dir Path to iproute2 include dir -+ --libbpf_dir Path to libbpf DESTDIR -+ --libbpf_force Enable/disable libbpf by force. Available options: -+ on: require link against libbpf, quit config if no libbpf support -+ off: disable libbpf probing -+ -h | --help Show this usage info - EOF - exit $1 - } -@@ -499,31 +499,25 @@ EOF - if [ $# -eq 1 ] && [ "$(echo $1 | cut -c 1)" != '-' ]; then - INCLUDE="$1" - else -- while true; do -+ while [ "$#" -gt 0 ]; do - case "$1" in - --include_dir) - shift -- INCLUDE="$1" -- [ "$#" -gt 0 ] && shift ;; -+ INCLUDE="$1" ;; - --libbpf_dir) - shift -- LIBBPF_DIR="$1" -- [ "$#" -gt 0 ] && shift ;; -+ LIBBPF_DIR="$1" ;; - --libbpf_force) -- if [ "$2" != 'on' ] && [ "$2" != 'off' ]; then -- usage 1 -- fi -- LIBBPF_FORCE=$2 -- shift 2 ;; -+ shift -+ LIBBPF_FORCE="$1" ;; - -h | --help) - usage 0 ;; - --*) -- shift ;; -- "") -- break ;; -+ ;; - *) - usage 1 ;; - esac -+ [ "$#" -gt 0 ] && shift - done - fi - -@@ -531,6 +525,11 @@ fi - if [ "${LIBBPF_DIR-unused}" != "unused" ]; then - [ -d "$LIBBPF_DIR" ] || usage 1 - fi -+if [ "${LIBBPF_FORCE-unused}" != "unused" ]; then -+ if [ "$LIBBPF_FORCE" != 'on' ] && [ "$LIBBPF_FORCE" != 'off' ]; then -+ usage 1 -+ fi -+fi - - echo "# Generated config based on" $INCLUDE >$CONFIG - quiet_config >> $CONFIG --- -2.31.1 - diff --git a/SOURCES/0005-configure-support-param-value-style.patch b/SOURCES/0005-configure-support-param-value-style.patch deleted file mode 100644 index b4113dc..0000000 --- a/SOURCES/0005-configure-support-param-value-style.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 03bc25c8afdcb8fb69543ec9a7f5f0d7cb176dd6 Mon Sep 17 00:00:00 2001 -Message-Id: <03bc25c8afdcb8fb69543ec9a7f5f0d7cb176dd6.1637749821.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Wed, 24 Nov 2021 11:28:08 +0100 -Subject: [PATCH] configure: support --param=value style - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2009355 -Upstream Status: iproute2.git commit 4b8bca5f - -commit 4b8bca5f9e3e6f210b1036166dc98801e76d8ee5 -Author: Andrea Claudi -Date: Thu Oct 14 10:50:53 2021 +0200 - - configure: support --param=value style - - This commit makes it possible to specify values for configure params - using the common autotools configure syntax '--param=value'. - - Signed-off-by: Andrea Claudi - Acked-by: Phil Sutter - Signed-off-by: David Ahern ---- - configure | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/configure b/configure -index 26e06eb8..9a2645d9 100755 ---- a/configure -+++ b/configure -@@ -504,12 +504,18 @@ else - --include_dir) - shift - INCLUDE="$1" ;; -+ --include_dir=*) -+ INCLUDE="${1#*=}" ;; - --libbpf_dir) - shift - LIBBPF_DIR="$1" ;; -+ --libbpf_dir=*) -+ LIBBPF_DIR="${1#*=}" ;; - --libbpf_force) - shift - LIBBPF_FORCE="$1" ;; -+ --libbpf_force=*) -+ LIBBPF_FORCE="${1#*=}" ;; - -h | --help) - usage 0 ;; - --*) --- -2.31.1 - diff --git a/SOURCES/0006-configure-add-the-prefix-option.patch b/SOURCES/0006-configure-add-the-prefix-option.patch deleted file mode 100644 index a5cc2d8..0000000 --- a/SOURCES/0006-configure-add-the-prefix-option.patch +++ /dev/null @@ -1,72 +0,0 @@ -From a975d2b983bee77423ffbb29803403e0c3cba5bc Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: -From: Andrea Claudi -Date: Wed, 24 Nov 2021 11:28:08 +0100 -Subject: [PATCH] configure: add the --prefix option - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2009355 -Upstream Status: iproute2.git commit 0ee1950b - -commit 0ee1950b5c38986ea896606810231f5f9d761a00 -Author: Andrea Claudi -Date: Thu Oct 14 10:50:54 2021 +0200 - - configure: add the --prefix option - - This commit add the '--prefix' option to the iproute2 configure script. - - This mimics the '--prefix' option that autotools configure provides, and - will be used later to allow users or packagers to set the lib directory. - - Signed-off-by: Andrea Claudi - Acked-by: Phil Sutter - Signed-off-by: David Ahern ---- - configure | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/configure b/configure -index 9a2645d9..05e23eff 100755 ---- a/configure -+++ b/configure -@@ -3,6 +3,7 @@ - # This is not an autoconf generated configure - - INCLUDE="$PWD/include" -+PREFIX="/usr" - - # Output file which is input to Makefile - CONFIG=config.mk -@@ -490,6 +491,7 @@ Usage: $0 [OPTIONS] - --libbpf_force Enable/disable libbpf by force. Available options: - on: require link against libbpf, quit config if no libbpf support - off: disable libbpf probing -+ --prefix Path prefix of the lib files to install - -h | --help Show this usage info - EOF - exit $1 -@@ -516,6 +518,11 @@ else - LIBBPF_FORCE="$1" ;; - --libbpf_force=*) - LIBBPF_FORCE="${1#*=}" ;; -+ --prefix) -+ shift -+ PREFIX="$1" ;; -+ --prefix=*) -+ PREFIX="${1#*=}" ;; - -h | --help) - usage 0 ;; - --*) -@@ -536,6 +543,7 @@ if [ "${LIBBPF_FORCE-unused}" != "unused" ]; then - usage 1 - fi - fi -+[ -z "$PREFIX" ] && usage 1 - - echo "# Generated config based on" $INCLUDE >$CONFIG - quiet_config >> $CONFIG --- -2.31.1 - diff --git a/SOURCES/0007-configure-add-the-libdir-option.patch b/SOURCES/0007-configure-add-the-libdir-option.patch deleted file mode 100644 index a2aacc4..0000000 --- a/SOURCES/0007-configure-add-the-libdir-option.patch +++ /dev/null @@ -1,151 +0,0 @@ -From 935d2e39c8341178adbfcf7ae037b9f64dbc2d6e Mon Sep 17 00:00:00 2001 -Message-Id: <935d2e39c8341178adbfcf7ae037b9f64dbc2d6e.1637749821.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Wed, 24 Nov 2021 11:28:09 +0100 -Subject: [PATCH] configure: add the --libdir option - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2009355 -Upstream Status: iproute2.git commit cee0cf84 - -commit cee0cf84bd32c8d9215f0c155187ad99d52a69b1 -Author: Andrea Claudi -Date: Thu Oct 14 10:50:55 2021 +0200 - - configure: add the --libdir option - - This commit allows users/packagers to choose a lib directory to store - iproute2 lib files. - - At the moment iproute2 ship lib files in /usr/lib and offers no way to - modify this setting. However, according to the FHS, distros may choose - "one or more variants of the /lib directory on systems which support - more than one binary format" (e.g. /usr/lib64 on Fedora). - - As Luca states in commit a3272b93725a ("configure: restore backward - compatibility"), packaging systems may assume that 'configure' is from - autotools, and try to pass it some parameters. - - Allowing the '--libdir=/path/to/libdir' syntax, we can use this to our - advantage, and let the lib directory to be chosen by the distro - packaging system. - - Note that LIBDIR uses "\${prefix}/lib" as default value because autoconf - allows this to be expanded to the --prefix value at configure runtime. - "\${prefix}" is replaced with the PREFIX value in check_lib_dir(). - - Signed-off-by: Andrea Claudi - Acked-by: Phil Sutter - Signed-off-by: David Ahern ---- - Makefile | 7 ++++--- - configure | 18 ++++++++++++++++++ - 2 files changed, 22 insertions(+), 3 deletions(-) - -diff --git a/Makefile b/Makefile -index 5bc11477..45655ca4 100644 ---- a/Makefile -+++ b/Makefile -@@ -1,6 +1,8 @@ - # SPDX-License-Identifier: GPL-2.0 - # Top level Makefile for iproute2 - -+-include config.mk -+ - ifeq ("$(origin V)", "command line") - VERBOSE = $(V) - endif -@@ -13,7 +15,6 @@ MAKEFLAGS += --no-print-directory - endif - - PREFIX?=/usr --LIBDIR?=$(PREFIX)/lib - SBINDIR?=/sbin - CONFDIR?=/etc/iproute2 - NETNS_RUN_DIR?=/var/run/netns -@@ -60,7 +61,7 @@ SUBDIRS=lib ip tc bridge misc netem genl tipc devlink rdma dcb man vdpa - LIBNETLINK=../lib/libutil.a ../lib/libnetlink.a - LDLIBS += $(LIBNETLINK) - --all: config -+all: config.mk - @set -e; \ - for i in $(SUBDIRS); \ - do echo; echo $$i; $(MAKE) -C $$i; done -@@ -80,7 +81,7 @@ help: - @echo "Make Arguments:" - @echo " V=[0|1] - set build verbosity level" - --config: -+config.mk: - @if [ ! -f config.mk -o configure -nt config.mk ]; then \ - sh configure $(KERNEL_INCLUDE); \ - fi -diff --git a/configure b/configure -index 05e23eff..8ddff43c 100755 ---- a/configure -+++ b/configure -@@ -4,6 +4,7 @@ - - INCLUDE="$PWD/include" - PREFIX="/usr" -+LIBDIR="\${prefix}/lib" - - # Output file which is input to Makefile - CONFIG=config.mk -@@ -149,6 +150,15 @@ EOF - rm -f $TMPDIR/ipttest.c $TMPDIR/ipttest - } - -+check_lib_dir() -+{ -+ LIBDIR=$(echo $LIBDIR | sed "s|\${prefix}|$PREFIX|") -+ -+ echo -n "lib directory: " -+ echo "$LIBDIR" -+ echo "LIBDIR:=$LIBDIR" >> $CONFIG -+} -+ - check_ipt() - { - if ! grep TC_CONFIG_XT $CONFIG > /dev/null; then -@@ -487,6 +497,7 @@ usage() - cat < Path to iproute2 include dir -+ --libdir Path to iproute2 lib dir - --libbpf_dir Path to libbpf DESTDIR - --libbpf_force Enable/disable libbpf by force. Available options: - on: require link against libbpf, quit config if no libbpf support -@@ -508,6 +519,11 @@ else - INCLUDE="$1" ;; - --include_dir=*) - INCLUDE="${1#*=}" ;; -+ --libdir) -+ shift -+ LIBDIR="$1" ;; -+ --libdir=*) -+ LIBDIR="${1#*=}" ;; - --libbpf_dir) - shift - LIBBPF_DIR="$1" ;; -@@ -544,6 +560,7 @@ if [ "${LIBBPF_FORCE-unused}" != "unused" ]; then - fi - fi - [ -z "$PREFIX" ] && usage 1 -+[ -z "$LIBDIR" ] && usage 1 - - echo "# Generated config based on" $INCLUDE >$CONFIG - quiet_config >> $CONFIG -@@ -568,6 +585,7 @@ if ! grep -q TC_CONFIG_NO_XT $CONFIG; then - fi - - echo -+check_lib_dir - if ! grep -q TC_CONFIG_NO_XT $CONFIG; then - echo -n "iptables modules directory: " - check_ipt_lib_dir --- -2.31.1 - diff --git a/SOURCES/0008-Update-kernel-headers-and-import-virtio_net.patch b/SOURCES/0008-Update-kernel-headers-and-import-virtio_net.patch deleted file mode 100644 index afca9c5..0000000 --- a/SOURCES/0008-Update-kernel-headers-and-import-virtio_net.patch +++ /dev/null @@ -1,395 +0,0 @@ -From 5c43a928d8eaca78e541029534b87fd7d4ca859b Mon Sep 17 00:00:00 2001 -Message-Id: <5c43a928d8eaca78e541029534b87fd7d4ca859b.1647984433.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 16:35:15 +0100 -Subject: [PATCH] Update kernel headers and import virtio_net - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2059427 -Upstream Status: iproute2-next.git commit 5cb7ec0c - -commit 5cb7ec0c8d554a7ea32c2f924d7a2fc66af4544a -Author: David Ahern -Date: Sat Dec 18 14:00:29 2021 -0700 - - Update kernel headers and import virtio_net - - Update kernel headers to commit: - f85b244ee395 ("xdp: move the if dev statements to the first") - - and import virtio_net.h for vdpa. - - Signed-off-by: David Ahern ---- - include/uapi/linux/virtio_net.h | 358 ++++++++++++++++++++++++++++++++ - 1 file changed, 358 insertions(+) - create mode 100644 include/uapi/linux/virtio_net.h - -diff --git a/include/uapi/linux/virtio_net.h b/include/uapi/linux/virtio_net.h -new file mode 100644 -index 00000000..ab08237f ---- /dev/null -+++ b/include/uapi/linux/virtio_net.h -@@ -0,0 +1,358 @@ -+#ifndef _LINUX_VIRTIO_NET_H -+#define _LINUX_VIRTIO_NET_H -+/* This header is BSD licensed so anyone can use the definitions to implement -+ * compatible drivers/servers. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. Neither the name of IBM nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. */ -+#include -+#include -+#include -+#include -+#include -+ -+/* The feature bitmap for virtio net */ -+#define VIRTIO_NET_F_CSUM 0 /* Host handles pkts w/ partial csum */ -+#define VIRTIO_NET_F_GUEST_CSUM 1 /* Guest handles pkts w/ partial csum */ -+#define VIRTIO_NET_F_CTRL_GUEST_OFFLOADS 2 /* Dynamic offload configuration. */ -+#define VIRTIO_NET_F_MTU 3 /* Initial MTU advice */ -+#define VIRTIO_NET_F_MAC 5 /* Host has given MAC address. */ -+#define VIRTIO_NET_F_GUEST_TSO4 7 /* Guest can handle TSOv4 in. */ -+#define VIRTIO_NET_F_GUEST_TSO6 8 /* Guest can handle TSOv6 in. */ -+#define VIRTIO_NET_F_GUEST_ECN 9 /* Guest can handle TSO[6] w/ ECN in. */ -+#define VIRTIO_NET_F_GUEST_UFO 10 /* Guest can handle UFO in. */ -+#define VIRTIO_NET_F_HOST_TSO4 11 /* Host can handle TSOv4 in. */ -+#define VIRTIO_NET_F_HOST_TSO6 12 /* Host can handle TSOv6 in. */ -+#define VIRTIO_NET_F_HOST_ECN 13 /* Host can handle TSO[6] w/ ECN in. */ -+#define VIRTIO_NET_F_HOST_UFO 14 /* Host can handle UFO in. */ -+#define VIRTIO_NET_F_MRG_RXBUF 15 /* Host can merge receive buffers. */ -+#define VIRTIO_NET_F_STATUS 16 /* virtio_net_config.status available */ -+#define VIRTIO_NET_F_CTRL_VQ 17 /* Control channel available */ -+#define VIRTIO_NET_F_CTRL_RX 18 /* Control channel RX mode support */ -+#define VIRTIO_NET_F_CTRL_VLAN 19 /* Control channel VLAN filtering */ -+#define VIRTIO_NET_F_CTRL_RX_EXTRA 20 /* Extra RX mode control support */ -+#define VIRTIO_NET_F_GUEST_ANNOUNCE 21 /* Guest can announce device on the -+ * network */ -+#define VIRTIO_NET_F_MQ 22 /* Device supports Receive Flow -+ * Steering */ -+#define VIRTIO_NET_F_CTRL_MAC_ADDR 23 /* Set MAC address */ -+ -+#define VIRTIO_NET_F_HASH_REPORT 57 /* Supports hash report */ -+#define VIRTIO_NET_F_RSS 60 /* Supports RSS RX steering */ -+#define VIRTIO_NET_F_RSC_EXT 61 /* extended coalescing info */ -+#define VIRTIO_NET_F_STANDBY 62 /* Act as standby for another device -+ * with the same MAC. -+ */ -+#define VIRTIO_NET_F_SPEED_DUPLEX 63 /* Device set linkspeed and duplex */ -+ -+#ifndef VIRTIO_NET_NO_LEGACY -+#define VIRTIO_NET_F_GSO 6 /* Host handles pkts w/ any GSO type */ -+#endif /* VIRTIO_NET_NO_LEGACY */ -+ -+#define VIRTIO_NET_S_LINK_UP 1 /* Link is up */ -+#define VIRTIO_NET_S_ANNOUNCE 2 /* Announcement is needed */ -+ -+/* supported/enabled hash types */ -+#define VIRTIO_NET_RSS_HASH_TYPE_IPv4 (1 << 0) -+#define VIRTIO_NET_RSS_HASH_TYPE_TCPv4 (1 << 1) -+#define VIRTIO_NET_RSS_HASH_TYPE_UDPv4 (1 << 2) -+#define VIRTIO_NET_RSS_HASH_TYPE_IPv6 (1 << 3) -+#define VIRTIO_NET_RSS_HASH_TYPE_TCPv6 (1 << 4) -+#define VIRTIO_NET_RSS_HASH_TYPE_UDPv6 (1 << 5) -+#define VIRTIO_NET_RSS_HASH_TYPE_IP_EX (1 << 6) -+#define VIRTIO_NET_RSS_HASH_TYPE_TCP_EX (1 << 7) -+#define VIRTIO_NET_RSS_HASH_TYPE_UDP_EX (1 << 8) -+ -+struct virtio_net_config { -+ /* The config defining mac address (if VIRTIO_NET_F_MAC) */ -+ __u8 mac[ETH_ALEN]; -+ /* See VIRTIO_NET_F_STATUS and VIRTIO_NET_S_* above */ -+ __virtio16 status; -+ /* Maximum number of each of transmit and receive queues; -+ * see VIRTIO_NET_F_MQ and VIRTIO_NET_CTRL_MQ. -+ * Legal values are between 1 and 0x8000 -+ */ -+ __virtio16 max_virtqueue_pairs; -+ /* Default maximum transmit unit advice */ -+ __virtio16 mtu; -+ /* -+ * speed, in units of 1Mb. All values 0 to INT_MAX are legal. -+ * Any other value stands for unknown. -+ */ -+ __le32 speed; -+ /* -+ * 0x00 - half duplex -+ * 0x01 - full duplex -+ * Any other value stands for unknown. -+ */ -+ __u8 duplex; -+ /* maximum size of RSS key */ -+ __u8 rss_max_key_size; -+ /* maximum number of indirection table entries */ -+ __le16 rss_max_indirection_table_length; -+ /* bitmask of supported VIRTIO_NET_RSS_HASH_ types */ -+ __le32 supported_hash_types; -+} __attribute__((packed)); -+ -+/* -+ * This header comes first in the scatter-gather list. If you don't -+ * specify GSO or CSUM features, you can simply ignore the header. -+ * -+ * This is bitwise-equivalent to the legacy struct virtio_net_hdr_mrg_rxbuf, -+ * only flattened. -+ */ -+struct virtio_net_hdr_v1 { -+#define VIRTIO_NET_HDR_F_NEEDS_CSUM 1 /* Use csum_start, csum_offset */ -+#define VIRTIO_NET_HDR_F_DATA_VALID 2 /* Csum is valid */ -+#define VIRTIO_NET_HDR_F_RSC_INFO 4 /* rsc info in csum_ fields */ -+ __u8 flags; -+#define VIRTIO_NET_HDR_GSO_NONE 0 /* Not a GSO frame */ -+#define VIRTIO_NET_HDR_GSO_TCPV4 1 /* GSO frame, IPv4 TCP (TSO) */ -+#define VIRTIO_NET_HDR_GSO_UDP 3 /* GSO frame, IPv4 UDP (UFO) */ -+#define VIRTIO_NET_HDR_GSO_TCPV6 4 /* GSO frame, IPv6 TCP */ -+#define VIRTIO_NET_HDR_GSO_ECN 0x80 /* TCP has ECN set */ -+ __u8 gso_type; -+ __virtio16 hdr_len; /* Ethernet + IP + tcp/udp hdrs */ -+ __virtio16 gso_size; /* Bytes to append to hdr_len per frame */ -+ union { -+ struct { -+ __virtio16 csum_start; -+ __virtio16 csum_offset; -+ }; -+ /* Checksum calculation */ -+ struct { -+ /* Position to start checksumming from */ -+ __virtio16 start; -+ /* Offset after that to place checksum */ -+ __virtio16 offset; -+ } csum; -+ /* Receive Segment Coalescing */ -+ struct { -+ /* Number of coalesced segments */ -+ __le16 segments; -+ /* Number of duplicated acks */ -+ __le16 dup_acks; -+ } rsc; -+ }; -+ __virtio16 num_buffers; /* Number of merged rx buffers */ -+}; -+ -+struct virtio_net_hdr_v1_hash { -+ struct virtio_net_hdr_v1 hdr; -+ __le32 hash_value; -+#define VIRTIO_NET_HASH_REPORT_NONE 0 -+#define VIRTIO_NET_HASH_REPORT_IPv4 1 -+#define VIRTIO_NET_HASH_REPORT_TCPv4 2 -+#define VIRTIO_NET_HASH_REPORT_UDPv4 3 -+#define VIRTIO_NET_HASH_REPORT_IPv6 4 -+#define VIRTIO_NET_HASH_REPORT_TCPv6 5 -+#define VIRTIO_NET_HASH_REPORT_UDPv6 6 -+#define VIRTIO_NET_HASH_REPORT_IPv6_EX 7 -+#define VIRTIO_NET_HASH_REPORT_TCPv6_EX 8 -+#define VIRTIO_NET_HASH_REPORT_UDPv6_EX 9 -+ __le16 hash_report; -+ __le16 padding; -+}; -+ -+#ifndef VIRTIO_NET_NO_LEGACY -+/* This header comes first in the scatter-gather list. -+ * For legacy virtio, if VIRTIO_F_ANY_LAYOUT is not negotiated, it must -+ * be the first element of the scatter-gather list. If you don't -+ * specify GSO or CSUM features, you can simply ignore the header. */ -+struct virtio_net_hdr { -+ /* See VIRTIO_NET_HDR_F_* */ -+ __u8 flags; -+ /* See VIRTIO_NET_HDR_GSO_* */ -+ __u8 gso_type; -+ __virtio16 hdr_len; /* Ethernet + IP + tcp/udp hdrs */ -+ __virtio16 gso_size; /* Bytes to append to hdr_len per frame */ -+ __virtio16 csum_start; /* Position to start checksumming from */ -+ __virtio16 csum_offset; /* Offset after that to place checksum */ -+}; -+ -+/* This is the version of the header to use when the MRG_RXBUF -+ * feature has been negotiated. */ -+struct virtio_net_hdr_mrg_rxbuf { -+ struct virtio_net_hdr hdr; -+ __virtio16 num_buffers; /* Number of merged rx buffers */ -+}; -+#endif /* ...VIRTIO_NET_NO_LEGACY */ -+ -+/* -+ * Control virtqueue data structures -+ * -+ * The control virtqueue expects a header in the first sg entry -+ * and an ack/status response in the last entry. Data for the -+ * command goes in between. -+ */ -+struct virtio_net_ctrl_hdr { -+ __u8 class; -+ __u8 cmd; -+} __attribute__((packed)); -+ -+typedef __u8 virtio_net_ctrl_ack; -+ -+#define VIRTIO_NET_OK 0 -+#define VIRTIO_NET_ERR 1 -+ -+/* -+ * Control the RX mode, ie. promisucous, allmulti, etc... -+ * All commands require an "out" sg entry containing a 1 byte -+ * state value, zero = disable, non-zero = enable. Commands -+ * 0 and 1 are supported with the VIRTIO_NET_F_CTRL_RX feature. -+ * Commands 2-5 are added with VIRTIO_NET_F_CTRL_RX_EXTRA. -+ */ -+#define VIRTIO_NET_CTRL_RX 0 -+ #define VIRTIO_NET_CTRL_RX_PROMISC 0 -+ #define VIRTIO_NET_CTRL_RX_ALLMULTI 1 -+ #define VIRTIO_NET_CTRL_RX_ALLUNI 2 -+ #define VIRTIO_NET_CTRL_RX_NOMULTI 3 -+ #define VIRTIO_NET_CTRL_RX_NOUNI 4 -+ #define VIRTIO_NET_CTRL_RX_NOBCAST 5 -+ -+/* -+ * Control the MAC -+ * -+ * The MAC filter table is managed by the hypervisor, the guest should -+ * assume the size is infinite. Filtering should be considered -+ * non-perfect, ie. based on hypervisor resources, the guest may -+ * received packets from sources not specified in the filter list. -+ * -+ * In addition to the class/cmd header, the TABLE_SET command requires -+ * two out scatterlists. Each contains a 4 byte count of entries followed -+ * by a concatenated byte stream of the ETH_ALEN MAC addresses. The -+ * first sg list contains unicast addresses, the second is for multicast. -+ * This functionality is present if the VIRTIO_NET_F_CTRL_RX feature -+ * is available. -+ * -+ * The ADDR_SET command requests one out scatterlist, it contains a -+ * 6 bytes MAC address. This functionality is present if the -+ * VIRTIO_NET_F_CTRL_MAC_ADDR feature is available. -+ */ -+struct virtio_net_ctrl_mac { -+ __virtio32 entries; -+ __u8 macs[][ETH_ALEN]; -+} __attribute__((packed)); -+ -+#define VIRTIO_NET_CTRL_MAC 1 -+ #define VIRTIO_NET_CTRL_MAC_TABLE_SET 0 -+ #define VIRTIO_NET_CTRL_MAC_ADDR_SET 1 -+ -+/* -+ * Control VLAN filtering -+ * -+ * The VLAN filter table is controlled via a simple ADD/DEL interface. -+ * VLAN IDs not added may be filterd by the hypervisor. Del is the -+ * opposite of add. Both commands expect an out entry containing a 2 -+ * byte VLAN ID. VLAN filterting is available with the -+ * VIRTIO_NET_F_CTRL_VLAN feature bit. -+ */ -+#define VIRTIO_NET_CTRL_VLAN 2 -+ #define VIRTIO_NET_CTRL_VLAN_ADD 0 -+ #define VIRTIO_NET_CTRL_VLAN_DEL 1 -+ -+/* -+ * Control link announce acknowledgement -+ * -+ * The command VIRTIO_NET_CTRL_ANNOUNCE_ACK is used to indicate that -+ * driver has recevied the notification; device would clear the -+ * VIRTIO_NET_S_ANNOUNCE bit in the status field after it receives -+ * this command. -+ */ -+#define VIRTIO_NET_CTRL_ANNOUNCE 3 -+ #define VIRTIO_NET_CTRL_ANNOUNCE_ACK 0 -+ -+/* -+ * Control Receive Flow Steering -+ */ -+#define VIRTIO_NET_CTRL_MQ 4 -+/* -+ * The command VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET -+ * enables Receive Flow Steering, specifying the number of the transmit and -+ * receive queues that will be used. After the command is consumed and acked by -+ * the device, the device will not steer new packets on receive virtqueues -+ * other than specified nor read from transmit virtqueues other than specified. -+ * Accordingly, driver should not transmit new packets on virtqueues other than -+ * specified. -+ */ -+struct virtio_net_ctrl_mq { -+ __virtio16 virtqueue_pairs; -+}; -+ -+ #define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET 0 -+ #define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN 1 -+ #define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX 0x8000 -+ -+/* -+ * The command VIRTIO_NET_CTRL_MQ_RSS_CONFIG has the same effect as -+ * VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET does and additionally configures -+ * the receive steering to use a hash calculated for incoming packet -+ * to decide on receive virtqueue to place the packet. The command -+ * also provides parameters to calculate a hash and receive virtqueue. -+ */ -+struct virtio_net_rss_config { -+ __le32 hash_types; -+ __le16 indirection_table_mask; -+ __le16 unclassified_queue; -+ __le16 indirection_table[1/* + indirection_table_mask */]; -+ __le16 max_tx_vq; -+ __u8 hash_key_length; -+ __u8 hash_key_data[/* hash_key_length */]; -+}; -+ -+ #define VIRTIO_NET_CTRL_MQ_RSS_CONFIG 1 -+ -+/* -+ * The command VIRTIO_NET_CTRL_MQ_HASH_CONFIG requests the device -+ * to include in the virtio header of the packet the value of the -+ * calculated hash and the report type of hash. It also provides -+ * parameters for hash calculation. The command requires feature -+ * VIRTIO_NET_F_HASH_REPORT to be negotiated to extend the -+ * layout of virtio header as defined in virtio_net_hdr_v1_hash. -+ */ -+struct virtio_net_hash_config { -+ __le32 hash_types; -+ /* for compatibility with virtio_net_rss_config */ -+ __le16 reserved[4]; -+ __u8 hash_key_length; -+ __u8 hash_key_data[/* hash_key_length */]; -+}; -+ -+ #define VIRTIO_NET_CTRL_MQ_HASH_CONFIG 2 -+ -+/* -+ * Control network offloads -+ * -+ * Reconfigures the network offloads that Guest can handle. -+ * -+ * Available with the VIRTIO_NET_F_CTRL_GUEST_OFFLOADS feature bit. -+ * -+ * Command data format matches the feature bit mask exactly. -+ * -+ * See VIRTIO_NET_F_GUEST_* for the list of offloads -+ * that can be enabled/disabled. -+ */ -+#define VIRTIO_NET_CTRL_GUEST_OFFLOADS 5 -+#define VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET 0 -+ -+#endif /* _LINUX_VIRTIO_NET_H */ --- -2.35.1 - diff --git a/SOURCES/0009-vdpa-align-uapi-headers.patch b/SOURCES/0009-vdpa-align-uapi-headers.patch deleted file mode 100644 index 0aa180a..0000000 --- a/SOURCES/0009-vdpa-align-uapi-headers.patch +++ /dev/null @@ -1,141 +0,0 @@ -From c8e6e4e8c15d119aa6586cd1d594f69a7025ed0a Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 16:35:15 +0100 -Subject: [PATCH] vdpa: align uapi headers - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2059427 -Upstream Status: iproute2-next.git commit fa58de9b - -commit fa58de9b0c73e8e02104603d82aa5b92df2a0e0f -Author: Stephen Hemminger -Date: Thu Nov 18 09:56:57 2021 -0800 - - vdpa: align uapi headers - - Update vdpa headers based on 5.16.0-rc1 and remove redundant - copy. - - Signed-off-by: Stephen Hemminger ---- - include/uapi/linux/vdpa.h | 40 ---------------------------- - vdpa/include/uapi/linux/vdpa.h | 7 +++++ - vdpa/include/uapi/linux/virtio_ids.h | 26 ++++++++++++++++++ - 3 files changed, 33 insertions(+), 40 deletions(-) - delete mode 100644 include/uapi/linux/vdpa.h - -diff --git a/include/uapi/linux/vdpa.h b/include/uapi/linux/vdpa.h -deleted file mode 100644 -index 37ae26b6..00000000 ---- a/include/uapi/linux/vdpa.h -+++ /dev/null -@@ -1,40 +0,0 @@ --/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ --/* -- * vdpa device management interface -- * Copyright (c) 2020 Mellanox Technologies Ltd. All rights reserved. -- */ -- --#ifndef _LINUX_VDPA_H_ --#define _LINUX_VDPA_H_ -- --#define VDPA_GENL_NAME "vdpa" --#define VDPA_GENL_VERSION 0x1 -- --enum vdpa_command { -- VDPA_CMD_UNSPEC, -- VDPA_CMD_MGMTDEV_NEW, -- VDPA_CMD_MGMTDEV_GET, /* can dump */ -- VDPA_CMD_DEV_NEW, -- VDPA_CMD_DEV_DEL, -- VDPA_CMD_DEV_GET, /* can dump */ --}; -- --enum vdpa_attr { -- VDPA_ATTR_UNSPEC, -- -- /* bus name (optional) + dev name together make the parent device handle */ -- VDPA_ATTR_MGMTDEV_BUS_NAME, /* string */ -- VDPA_ATTR_MGMTDEV_DEV_NAME, /* string */ -- VDPA_ATTR_MGMTDEV_SUPPORTED_CLASSES, /* u64 */ -- -- VDPA_ATTR_DEV_NAME, /* string */ -- VDPA_ATTR_DEV_ID, /* u32 */ -- VDPA_ATTR_DEV_VENDOR_ID, /* u32 */ -- VDPA_ATTR_DEV_MAX_VQS, /* u32 */ -- VDPA_ATTR_DEV_MAX_VQ_SIZE, /* u16 */ -- -- /* new attributes must be added above here */ -- VDPA_ATTR_MAX, --}; -- --#endif -diff --git a/vdpa/include/uapi/linux/vdpa.h b/vdpa/include/uapi/linux/vdpa.h -index 37ae26b6..b7eab069 100644 ---- a/vdpa/include/uapi/linux/vdpa.h -+++ b/vdpa/include/uapi/linux/vdpa.h -@@ -17,6 +17,7 @@ enum vdpa_command { - VDPA_CMD_DEV_NEW, - VDPA_CMD_DEV_DEL, - VDPA_CMD_DEV_GET, /* can dump */ -+ VDPA_CMD_DEV_CONFIG_GET, /* can dump */ - }; - - enum vdpa_attr { -@@ -32,6 +33,12 @@ enum vdpa_attr { - VDPA_ATTR_DEV_VENDOR_ID, /* u32 */ - VDPA_ATTR_DEV_MAX_VQS, /* u32 */ - VDPA_ATTR_DEV_MAX_VQ_SIZE, /* u16 */ -+ VDPA_ATTR_DEV_MIN_VQ_SIZE, /* u16 */ -+ -+ VDPA_ATTR_DEV_NET_CFG_MACADDR, /* binary */ -+ VDPA_ATTR_DEV_NET_STATUS, /* u8 */ -+ VDPA_ATTR_DEV_NET_CFG_MAX_VQP, /* u16 */ -+ VDPA_ATTR_DEV_NET_CFG_MTU, /* u16 */ - - /* new attributes must be added above here */ - VDPA_ATTR_MAX, -diff --git a/vdpa/include/uapi/linux/virtio_ids.h b/vdpa/include/uapi/linux/virtio_ids.h -index bc1c0621..80d76b75 100644 ---- a/vdpa/include/uapi/linux/virtio_ids.h -+++ b/vdpa/include/uapi/linux/virtio_ids.h -@@ -51,8 +51,34 @@ - #define VIRTIO_ID_PSTORE 22 /* virtio pstore device */ - #define VIRTIO_ID_IOMMU 23 /* virtio IOMMU */ - #define VIRTIO_ID_MEM 24 /* virtio mem */ -+#define VIRTIO_ID_SOUND 25 /* virtio sound */ - #define VIRTIO_ID_FS 26 /* virtio filesystem */ - #define VIRTIO_ID_PMEM 27 /* virtio pmem */ -+#define VIRTIO_ID_RPMB 28 /* virtio rpmb */ - #define VIRTIO_ID_MAC80211_HWSIM 29 /* virtio mac80211-hwsim */ -+#define VIRTIO_ID_VIDEO_ENCODER 30 /* virtio video encoder */ -+#define VIRTIO_ID_VIDEO_DECODER 31 /* virtio video decoder */ -+#define VIRTIO_ID_SCMI 32 /* virtio SCMI */ -+#define VIRTIO_ID_NITRO_SEC_MOD 33 /* virtio nitro secure module*/ -+#define VIRTIO_ID_I2C_ADAPTER 34 /* virtio i2c adapter */ -+#define VIRTIO_ID_WATCHDOG 35 /* virtio watchdog */ -+#define VIRTIO_ID_CAN 36 /* virtio can */ -+#define VIRTIO_ID_DMABUF 37 /* virtio dmabuf */ -+#define VIRTIO_ID_PARAM_SERV 38 /* virtio parameter server */ -+#define VIRTIO_ID_AUDIO_POLICY 39 /* virtio audio policy */ -+#define VIRTIO_ID_BT 40 /* virtio bluetooth */ -+#define VIRTIO_ID_GPIO 41 /* virtio gpio */ -+ -+/* -+ * Virtio Transitional IDs -+ */ -+ -+#define VIRTIO_TRANS_ID_NET 1000 /* transitional virtio net */ -+#define VIRTIO_TRANS_ID_BLOCK 1001 /* transitional virtio block */ -+#define VIRTIO_TRANS_ID_BALLOON 1002 /* transitional virtio balloon */ -+#define VIRTIO_TRANS_ID_CONSOLE 1003 /* transitional virtio console */ -+#define VIRTIO_TRANS_ID_SCSI 1004 /* transitional virtio SCSI */ -+#define VIRTIO_TRANS_ID_RNG 1005 /* transitional virtio rng */ -+#define VIRTIO_TRANS_ID_9P 1009 /* transitional virtio 9p console */ - - #endif /* _LINUX_VIRTIO_IDS_H */ --- -2.35.1 - diff --git a/SOURCES/0010-uapi-update-vdpa.h.patch b/SOURCES/0010-uapi-update-vdpa.h.patch deleted file mode 100644 index 83e783c..0000000 --- a/SOURCES/0010-uapi-update-vdpa.h.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 3d3a7ee1f5328bcc416b6a9a22f39359fc53b656 Mon Sep 17 00:00:00 2001 -Message-Id: <3d3a7ee1f5328bcc416b6a9a22f39359fc53b656.1647984433.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 16:35:15 +0100 -Subject: [PATCH] uapi: update vdpa.h - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2059427 -Upstream Status: iproute2-next.git commit 885e281e - -commit 885e281eadc238e30f7c3a42ad366ea123c03a83 -Author: Stephen Hemminger -Date: Fri Mar 11 19:16:25 2022 -0800 - - uapi: update vdpa.h - - Update header from upstream. - - Signed-off-by: Stephen Hemminger ---- - vdpa/include/uapi/linux/vdpa.h | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/vdpa/include/uapi/linux/vdpa.h b/vdpa/include/uapi/linux/vdpa.h -index b7eab069..cc575a82 100644 ---- a/vdpa/include/uapi/linux/vdpa.h -+++ b/vdpa/include/uapi/linux/vdpa.h -@@ -23,6 +23,9 @@ enum vdpa_command { - enum vdpa_attr { - VDPA_ATTR_UNSPEC, - -+ /* Pad attribute for 64b alignment */ -+ VDPA_ATTR_PAD = VDPA_ATTR_UNSPEC, -+ - /* bus name (optional) + dev name together make the parent device handle */ - VDPA_ATTR_MGMTDEV_BUS_NAME, /* string */ - VDPA_ATTR_MGMTDEV_DEV_NAME, /* string */ -@@ -40,6 +43,9 @@ enum vdpa_attr { - VDPA_ATTR_DEV_NET_CFG_MAX_VQP, /* u16 */ - VDPA_ATTR_DEV_NET_CFG_MTU, /* u16 */ - -+ VDPA_ATTR_DEV_NEGOTIATED_FEATURES, /* u64 */ -+ VDPA_ATTR_DEV_MGMTDEV_MAX_VQS, /* u32 */ -+ VDPA_ATTR_DEV_SUPPORTED_FEATURES, /* u64 */ - /* new attributes must be added above here */ - VDPA_ATTR_MAX, - }; --- -2.35.1 - diff --git a/SOURCES/0011-vdpa-Enable-user-to-query-vdpa-device-config-layout.patch b/SOURCES/0011-vdpa-Enable-user-to-query-vdpa-device-config-layout.patch deleted file mode 100644 index 9a8320e..0000000 --- a/SOURCES/0011-vdpa-Enable-user-to-query-vdpa-device-config-layout.patch +++ /dev/null @@ -1,239 +0,0 @@ -From 492d698656851b27349dc64a8f0c2f66057eea52 Mon Sep 17 00:00:00 2001 -Message-Id: <492d698656851b27349dc64a8f0c2f66057eea52.1647984433.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 16:35:15 +0100 -Subject: [PATCH] vdpa: Enable user to query vdpa device config layout - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2059427 -Upstream Status: iproute2-next.git commit a311f0c4 - -commit a311f0c43a67be939dfafda563453a3f9bf30e42 -Author: Parav Pandit -Date: Fri Dec 17 10:08:25 2021 +0200 - - vdpa: Enable user to query vdpa device config layout - - Query the device configuration layout whenever kernel supports it. - - An example of configuration layout of vdpa device of type network: - - $ vdpa dev add name bar mgmtdev vdpasim_net - - $ vdpa dev config show - bar: mac 00:35:09:19:48:05 link up link_announce false mtu 1500 - - $ vdpa dev config show -jp - { - "config": { - "bar": { - "mac": "00:35:09:19:48:05", - "link ": "up", - "link_announce ": false, - "mtu": 1500, - } - } - } - - Signed-off-by: Parav Pandit - Signed-off-by: David Ahern ---- - man/man8/vdpa-dev.8 | 21 +++++++++ - vdpa/vdpa.c | 110 ++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 131 insertions(+) - -diff --git a/man/man8/vdpa-dev.8 b/man/man8/vdpa-dev.8 -index 36433519..5d3a3f26 100644 ---- a/man/man8/vdpa-dev.8 -+++ b/man/man8/vdpa-dev.8 -@@ -36,6 +36,10 @@ vdpa-dev \- vdpa device configuration - .B vdpa dev del - .I DEV - -+.ti -8 -+.B vdpa dev config show -+.RI "[ " DEV " ]" -+ - .SH "DESCRIPTION" - .SS vdpa dev show - display vdpa device attributes - -@@ -65,6 +69,18 @@ Name of the management device to use for device addition. - .I "DEV" - - specifies the vdpa device to delete. - -+.SS vdpa dev config show - Show configuration of specific device or all devices. -+ -+.PP -+.I "DEV" -+- specifies the vdpa device to show its configuration. -+If this argument is omitted all devices configuration is listed. -+ -+.in +4 -+Format is: -+.in +2 -+VDPA_DEVICE_NAME -+ - .SH "EXAMPLES" - .PP - vdpa dev show -@@ -86,6 +102,11 @@ vdpa dev del foo - .RS 4 - Delete the vdpa device named foo which was previously created. - .RE -+.PP -+vdpa dev config show foo -+.RS 4 -+Shows the vdpa device configuration of device named foo. -+.RE - - .SH SEE ALSO - .BR vdpa (8), -diff --git a/vdpa/vdpa.c b/vdpa/vdpa.c -index 7fdb36b9..ba704254 100644 ---- a/vdpa/vdpa.c -+++ b/vdpa/vdpa.c -@@ -6,9 +6,11 @@ - #include - #include - #include -+#include - #include - #include - #include "mnl_utils.h" -+#include - - #include "version.h" - #include "json_print.h" -@@ -413,6 +415,7 @@ static void cmd_dev_help(void) - fprintf(stderr, "Usage: vdpa dev show [ DEV ]\n"); - fprintf(stderr, " vdpa dev add name NAME mgmtdev MANAGEMENTDEV\n"); - fprintf(stderr, " vdpa dev del DEV\n"); -+ fprintf(stderr, "Usage: vdpa dev config COMMAND [ OPTIONS ]\n"); - } - - static const char *device_type_name(uint32_t type) -@@ -520,6 +523,111 @@ static int cmd_dev_del(struct vdpa *vdpa, int argc, char **argv) - return mnlu_gen_socket_sndrcv(&vdpa->nlg, nlh, NULL, NULL); - } - -+static void pr_out_dev_net_config(struct nlattr **tb) -+{ -+ SPRINT_BUF(macaddr); -+ uint16_t val_u16; -+ -+ if (tb[VDPA_ATTR_DEV_NET_CFG_MACADDR]) { -+ const unsigned char *data; -+ uint16_t len; -+ -+ len = mnl_attr_get_payload_len(tb[VDPA_ATTR_DEV_NET_CFG_MACADDR]); -+ data = mnl_attr_get_payload(tb[VDPA_ATTR_DEV_NET_CFG_MACADDR]); -+ -+ print_string(PRINT_ANY, "mac", "mac %s ", -+ ll_addr_n2a(data, len, 0, macaddr, sizeof(macaddr))); -+ } -+ if (tb[VDPA_ATTR_DEV_NET_STATUS]) { -+ val_u16 = mnl_attr_get_u16(tb[VDPA_ATTR_DEV_NET_STATUS]); -+ print_string(PRINT_ANY, "link ", "link %s ", -+ (val_u16 & VIRTIO_NET_S_LINK_UP) ? "up" : "down"); -+ print_bool(PRINT_ANY, "link_announce ", "link_announce %s ", -+ (val_u16 & VIRTIO_NET_S_ANNOUNCE) ? true : false); -+ } -+ if (tb[VDPA_ATTR_DEV_NET_CFG_MAX_VQP]) { -+ val_u16 = mnl_attr_get_u16(tb[VDPA_ATTR_DEV_NET_CFG_MAX_VQP]); -+ print_uint(PRINT_ANY, "max_vq_pairs", "max_vq_pairs %d ", -+ val_u16); -+ } -+ if (tb[VDPA_ATTR_DEV_NET_CFG_MTU]) { -+ val_u16 = mnl_attr_get_u16(tb[VDPA_ATTR_DEV_NET_CFG_MTU]); -+ print_uint(PRINT_ANY, "mtu", "mtu %d ", val_u16); -+ } -+} -+ -+static void pr_out_dev_config(struct vdpa *vdpa, struct nlattr **tb) -+{ -+ uint32_t device_id = mnl_attr_get_u32(tb[VDPA_ATTR_DEV_ID]); -+ -+ pr_out_vdev_handle_start(vdpa, tb); -+ switch (device_id) { -+ case VIRTIO_ID_NET: -+ pr_out_dev_net_config(tb); -+ break; -+ default: -+ break; -+ } -+ pr_out_vdev_handle_end(vdpa); -+} -+ -+static int cmd_dev_config_show_cb(const struct nlmsghdr *nlh, void *data) -+{ -+ struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh); -+ struct nlattr *tb[VDPA_ATTR_MAX + 1] = {}; -+ struct vdpa *vdpa = data; -+ -+ mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb); -+ if (!tb[VDPA_ATTR_DEV_NAME] || !tb[VDPA_ATTR_DEV_ID]) -+ return MNL_CB_ERROR; -+ pr_out_dev_config(vdpa, tb); -+ return MNL_CB_OK; -+} -+ -+static int cmd_dev_config_show(struct vdpa *vdpa, int argc, char **argv) -+{ -+ uint16_t flags = NLM_F_REQUEST | NLM_F_ACK; -+ struct nlmsghdr *nlh; -+ int err; -+ -+ if (argc <= 0) -+ flags |= NLM_F_DUMP; -+ -+ nlh = mnlu_gen_socket_cmd_prepare(&vdpa->nlg, VDPA_CMD_DEV_CONFIG_GET, -+ flags); -+ if (argc > 0) { -+ err = vdpa_argv_parse_put(nlh, vdpa, argc, argv, -+ VDPA_OPT_VDEV_HANDLE); -+ if (err) -+ return err; -+ } -+ -+ pr_out_section_start(vdpa, "config"); -+ err = mnlu_gen_socket_sndrcv(&vdpa->nlg, nlh, cmd_dev_config_show_cb, vdpa); -+ pr_out_section_end(vdpa); -+ return err; -+} -+ -+static void cmd_dev_config_help(void) -+{ -+ fprintf(stderr, "Usage: vdpa dev config show [ DEV ]\n"); -+} -+ -+static int cmd_dev_config(struct vdpa *vdpa, int argc, char **argv) -+{ -+ if (!argc) -+ return cmd_dev_config_show(vdpa, argc - 1, argv + 1); -+ -+ if (matches(*argv, "help") == 0) { -+ cmd_dev_config_help(); -+ return 0; -+ } else if (matches(*argv, "show") == 0) { -+ return cmd_dev_config_show(vdpa, argc - 1, argv + 1); -+ } -+ fprintf(stderr, "Command \"%s\" not found\n", *argv); -+ return -ENOENT; -+} -+ - static int cmd_dev(struct vdpa *vdpa, int argc, char **argv) - { - if (!argc) -@@ -535,6 +643,8 @@ static int cmd_dev(struct vdpa *vdpa, int argc, char **argv) - return cmd_dev_add(vdpa, argc - 1, argv + 1); - } else if (matches(*argv, "del") == 0) { - return cmd_dev_del(vdpa, argc - 1, argv + 1); -+ } else if (matches(*argv, "config") == 0) { -+ return cmd_dev_config(vdpa, argc - 1, argv + 1); - } - fprintf(stderr, "Command \"%s\" not found\n", *argv); - return -ENOENT; --- -2.35.1 - diff --git a/SOURCES/0012-vdpa-Enable-user-to-set-mac-address-of-vdpa-device.patch b/SOURCES/0012-vdpa-Enable-user-to-set-mac-address-of-vdpa-device.patch deleted file mode 100644 index 37b80ef..0000000 --- a/SOURCES/0012-vdpa-Enable-user-to-set-mac-address-of-vdpa-device.patch +++ /dev/null @@ -1,233 +0,0 @@ -From f5af49ce12667a6331d1a866d52e67fc27308f5d Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 16:35:15 +0100 -Subject: [PATCH] vdpa: Enable user to set mac address of vdpa device - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2059427 -Upstream Status: iproute2-next.git commit 384938f9 - -commit 384938f9b00f2d203603e0919f23ae6857a14d96 -Author: Parav Pandit -Date: Fri Dec 17 10:08:26 2021 +0200 - - vdpa: Enable user to set mac address of vdpa device - - vdpa: Enable user to set mtu of the vdpa device - - Implement mtu setting for vdpa device. - - $ vdpa mgmtdev show - vdpasim_net: - supported_classes net - - Add the device with specified mac address: - $ vdpa dev add name bar mgmtdev vdpasim_net mac 00:11:22:33:44:55 - - View the config after setting: - $ vdpa dev config show - bar: mac 00:11:22:33:44:55 link up link_announce false mtu 1500 - - Signed-off-by: Parav Pandit - Signed-off-by: David Ahern ---- - man/man8/vdpa-dev.8 | 11 ++++++++++ - vdpa/vdpa.c | 52 ++++++++++++++++++++++++++++++++++++--------- - 2 files changed, 53 insertions(+), 10 deletions(-) - -diff --git a/man/man8/vdpa-dev.8 b/man/man8/vdpa-dev.8 -index 5d3a3f26..5c5ac469 100644 ---- a/man/man8/vdpa-dev.8 -+++ b/man/man8/vdpa-dev.8 -@@ -31,6 +31,7 @@ vdpa-dev \- vdpa device configuration - .I NAME - .B mgmtdev - .I MGMTDEV -+.RI "[ mac " MACADDR " ]" - - .ti -8 - .B vdpa dev del -@@ -63,6 +64,11 @@ Name of the new vdpa device to add. - .BI mgmtdev " MGMTDEV" - Name of the management device to use for device addition. - -+.PP -+.BI mac " MACADDR" -+- specifies the mac address for the new vdpa device. -+This is applicable only for the network type of vdpa device. This is optional. -+ - .SS vdpa dev del - Delete the vdpa device. - - .PP -@@ -98,6 +104,11 @@ vdpa dev add name foo mgmtdev vdpa_sim_net - Add the vdpa device named foo on the management device vdpa_sim_net. - .RE - .PP -+vdpa dev add name foo mgmtdev vdpa_sim_net mac 00:11:22:33:44:55 -+.RS 4 -+Add the vdpa device named foo on the management device vdpa_sim_net with mac address of 00:11:22:33:44:55. -+.RE -+.PP - vdpa dev del foo - .RS 4 - Delete the vdpa device named foo which was previously created. -diff --git a/vdpa/vdpa.c b/vdpa/vdpa.c -index ba704254..63d464d1 100644 ---- a/vdpa/vdpa.c -+++ b/vdpa/vdpa.c -@@ -4,6 +4,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -20,6 +21,7 @@ - #define VDPA_OPT_VDEV_MGMTDEV_HANDLE BIT(1) - #define VDPA_OPT_VDEV_NAME BIT(2) - #define VDPA_OPT_VDEV_HANDLE BIT(3) -+#define VDPA_OPT_VDEV_MAC BIT(4) - - struct vdpa_opts { - uint64_t present; /* flags of present items */ -@@ -27,6 +29,7 @@ struct vdpa_opts { - char *mdev_name; - const char *vdev_name; - unsigned int device_id; -+ char mac[ETH_ALEN]; - }; - - struct vdpa { -@@ -136,6 +139,21 @@ static int vdpa_argv_str(struct vdpa *vdpa, int argc, char **argv, - return 0; - } - -+static int vdpa_argv_mac(struct vdpa *vdpa, int argc, char **argv, char *mac) -+{ -+ int alen; -+ -+ if (argc <= 0 || *argv == NULL) { -+ fprintf(stderr, "String parameter expected\n"); -+ return -EINVAL; -+ } -+ -+ alen = ll_addr_a2n(mac, ETH_ALEN, *argv); -+ if (alen < 0) -+ return -EINVAL; -+ return 0; -+} -+ - struct vdpa_args_metadata { - uint64_t o_flag; - const char *err_msg; -@@ -183,13 +201,16 @@ static void vdpa_opts_put(struct nlmsghdr *nlh, struct vdpa *vdpa) - if ((opts->present & VDPA_OPT_VDEV_NAME) || - (opts->present & VDPA_OPT_VDEV_HANDLE)) - mnl_attr_put_strz(nlh, VDPA_ATTR_DEV_NAME, opts->vdev_name); -+ if (opts->present & VDPA_OPT_VDEV_MAC) -+ mnl_attr_put(nlh, VDPA_ATTR_DEV_NET_CFG_MACADDR, -+ sizeof(opts->mac), opts->mac); - } - - static int vdpa_argv_parse(struct vdpa *vdpa, int argc, char **argv, -- uint64_t o_required) -+ uint64_t o_required, uint64_t o_optional) - { -+ uint64_t o_all = o_required | o_optional; - struct vdpa_opts *opts = &vdpa->opts; -- uint64_t o_all = o_required; - uint64_t o_found = 0; - int err; - -@@ -233,6 +254,15 @@ static int vdpa_argv_parse(struct vdpa *vdpa, int argc, char **argv, - - NEXT_ARG_FWD(); - o_found |= VDPA_OPT_VDEV_MGMTDEV_HANDLE; -+ } else if ((strcmp(*argv, "mac") == 0) && -+ (o_all & VDPA_OPT_VDEV_MAC)) { -+ NEXT_ARG_FWD(); -+ err = vdpa_argv_mac(vdpa, argc, argv, opts->mac); -+ if (err) -+ return err; -+ -+ NEXT_ARG_FWD(); -+ o_found |= VDPA_OPT_VDEV_MAC; - } else { - fprintf(stderr, "Unknown option \"%s\"\n", *argv); - return -EINVAL; -@@ -246,11 +276,11 @@ static int vdpa_argv_parse(struct vdpa *vdpa, int argc, char **argv, - - static int vdpa_argv_parse_put(struct nlmsghdr *nlh, struct vdpa *vdpa, - int argc, char **argv, -- uint64_t o_required) -+ uint64_t o_required, uint64_t o_optional) - { - int err; - -- err = vdpa_argv_parse(vdpa, argc, argv, o_required); -+ err = vdpa_argv_parse(vdpa, argc, argv, o_required, o_optional); - if (err) - return err; - vdpa_opts_put(nlh, vdpa); -@@ -386,7 +416,7 @@ static int cmd_mgmtdev_show(struct vdpa *vdpa, int argc, char **argv) - flags); - if (argc > 0) { - err = vdpa_argv_parse_put(nlh, vdpa, argc, argv, -- VDPA_OPT_MGMTDEV_HANDLE); -+ VDPA_OPT_MGMTDEV_HANDLE, 0); - if (err) - return err; - } -@@ -413,7 +443,7 @@ static int cmd_mgmtdev(struct vdpa *vdpa, int argc, char **argv) - static void cmd_dev_help(void) - { - fprintf(stderr, "Usage: vdpa dev show [ DEV ]\n"); -- fprintf(stderr, " vdpa dev add name NAME mgmtdev MANAGEMENTDEV\n"); -+ fprintf(stderr, " vdpa dev add name NAME mgmtdev MANAGEMENTDEV [ mac MACADDR ]\n"); - fprintf(stderr, " vdpa dev del DEV\n"); - fprintf(stderr, "Usage: vdpa dev config COMMAND [ OPTIONS ]\n"); - } -@@ -483,7 +513,7 @@ static int cmd_dev_show(struct vdpa *vdpa, int argc, char **argv) - nlh = mnlu_gen_socket_cmd_prepare(&vdpa->nlg, VDPA_CMD_DEV_GET, flags); - if (argc > 0) { - err = vdpa_argv_parse_put(nlh, vdpa, argc, argv, -- VDPA_OPT_VDEV_HANDLE); -+ VDPA_OPT_VDEV_HANDLE, 0); - if (err) - return err; - } -@@ -502,7 +532,8 @@ static int cmd_dev_add(struct vdpa *vdpa, int argc, char **argv) - nlh = mnlu_gen_socket_cmd_prepare(&vdpa->nlg, VDPA_CMD_DEV_NEW, - NLM_F_REQUEST | NLM_F_ACK); - err = vdpa_argv_parse_put(nlh, vdpa, argc, argv, -- VDPA_OPT_VDEV_MGMTDEV_HANDLE | VDPA_OPT_VDEV_NAME); -+ VDPA_OPT_VDEV_MGMTDEV_HANDLE | VDPA_OPT_VDEV_NAME, -+ VDPA_OPT_VDEV_MAC); - if (err) - return err; - -@@ -516,7 +547,8 @@ static int cmd_dev_del(struct vdpa *vdpa, int argc, char **argv) - - nlh = mnlu_gen_socket_cmd_prepare(&vdpa->nlg, VDPA_CMD_DEV_DEL, - NLM_F_REQUEST | NLM_F_ACK); -- err = vdpa_argv_parse_put(nlh, vdpa, argc, argv, VDPA_OPT_VDEV_HANDLE); -+ err = vdpa_argv_parse_put(nlh, vdpa, argc, argv, VDPA_OPT_VDEV_HANDLE, -+ 0); - if (err) - return err; - -@@ -597,7 +629,7 @@ static int cmd_dev_config_show(struct vdpa *vdpa, int argc, char **argv) - flags); - if (argc > 0) { - err = vdpa_argv_parse_put(nlh, vdpa, argc, argv, -- VDPA_OPT_VDEV_HANDLE); -+ VDPA_OPT_VDEV_HANDLE, 0); - if (err) - return err; - } --- -2.35.1 - diff --git a/SOURCES/0013-vdpa-Enable-user-to-set-mtu-of-the-vdpa-device.patch b/SOURCES/0013-vdpa-Enable-user-to-set-mtu-of-the-vdpa-device.patch deleted file mode 100644 index ee657fb..0000000 --- a/SOURCES/0013-vdpa-Enable-user-to-set-mtu-of-the-vdpa-device.patch +++ /dev/null @@ -1,158 +0,0 @@ -From 2cd2172758cf8ba4c8f6148897a8968e62b73d31 Mon Sep 17 00:00:00 2001 -Message-Id: <2cd2172758cf8ba4c8f6148897a8968e62b73d31.1647984433.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 16:35:15 +0100 -Subject: [PATCH] vdpa: Enable user to set mtu of the vdpa device - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2059427 -Upstream Status: iproute2-next.git commit 167e33f3 - -commit 167e33f3be88c0fbe206df25145b850ddf3897a2 -Author: Parav Pandit -Date: Fri Dec 17 10:08:27 2021 +0200 - - vdpa: Enable user to set mtu of the vdpa device - - Implement mtu setting for vdpa device. - - $ vdpa mgmtdev show - vdpasim_net: - supported_classes net - - Add the device with mac address and mtu: - $ vdpa dev add name bar mgmtdev vdpasim_net mac 00:11:22:33:44:55 mtu 9000 - - In above command only mac address or only mtu can also be set. - - View the config after setting: - $ vdpa dev config show - bar: mac 00:11:22:33:44:55 link up link_announce false mtu 9000 - - Signed-off-by: Parav Pandit - Signed-off-by: David Ahern ---- - man/man8/vdpa-dev.8 | 10 ++++++++++ - vdpa/vdpa.c | 28 ++++++++++++++++++++++++++-- - 2 files changed, 36 insertions(+), 2 deletions(-) - -diff --git a/man/man8/vdpa-dev.8 b/man/man8/vdpa-dev.8 -index 5c5ac469..aa21ae3a 100644 ---- a/man/man8/vdpa-dev.8 -+++ b/man/man8/vdpa-dev.8 -@@ -32,6 +32,7 @@ vdpa-dev \- vdpa device configuration - .B mgmtdev - .I MGMTDEV - .RI "[ mac " MACADDR " ]" -+.RI "[ mtu " MTU " ]" - - .ti -8 - .B vdpa dev del -@@ -69,6 +70,10 @@ Name of the management device to use for device addition. - - specifies the mac address for the new vdpa device. - This is applicable only for the network type of vdpa device. This is optional. - -+.BI mtu " MTU" -+- specifies the mtu for the new vdpa device. -+This is applicable only for the network type of vdpa device. This is optional. -+ - .SS vdpa dev del - Delete the vdpa device. - - .PP -@@ -109,6 +114,11 @@ vdpa dev add name foo mgmtdev vdpa_sim_net mac 00:11:22:33:44:55 - Add the vdpa device named foo on the management device vdpa_sim_net with mac address of 00:11:22:33:44:55. - .RE - .PP -+vdpa dev add name foo mgmtdev vdpa_sim_net mac 00:11:22:33:44:55 mtu 9000 -+.RS 4 -+Add the vdpa device named foo on the management device vdpa_sim_net with mac address of 00:11:22:33:44:55 and mtu of 9000 bytes. -+.RE -+.PP - vdpa dev del foo - .RS 4 - Delete the vdpa device named foo which was previously created. -diff --git a/vdpa/vdpa.c b/vdpa/vdpa.c -index 63d464d1..f048e470 100644 ---- a/vdpa/vdpa.c -+++ b/vdpa/vdpa.c -@@ -22,6 +22,7 @@ - #define VDPA_OPT_VDEV_NAME BIT(2) - #define VDPA_OPT_VDEV_HANDLE BIT(3) - #define VDPA_OPT_VDEV_MAC BIT(4) -+#define VDPA_OPT_VDEV_MTU BIT(5) - - struct vdpa_opts { - uint64_t present; /* flags of present items */ -@@ -30,6 +31,7 @@ struct vdpa_opts { - const char *vdev_name; - unsigned int device_id; - char mac[ETH_ALEN]; -+ uint16_t mtu; - }; - - struct vdpa { -@@ -154,6 +156,17 @@ static int vdpa_argv_mac(struct vdpa *vdpa, int argc, char **argv, char *mac) - return 0; - } - -+static int vdpa_argv_u16(struct vdpa *vdpa, int argc, char **argv, -+ uint16_t *result) -+{ -+ if (argc <= 0 || *argv == NULL) { -+ fprintf(stderr, "number expected\n"); -+ return -EINVAL; -+ } -+ -+ return get_u16(result, *argv, 10); -+} -+ - struct vdpa_args_metadata { - uint64_t o_flag; - const char *err_msg; -@@ -204,6 +217,8 @@ static void vdpa_opts_put(struct nlmsghdr *nlh, struct vdpa *vdpa) - if (opts->present & VDPA_OPT_VDEV_MAC) - mnl_attr_put(nlh, VDPA_ATTR_DEV_NET_CFG_MACADDR, - sizeof(opts->mac), opts->mac); -+ if (opts->present & VDPA_OPT_VDEV_MTU) -+ mnl_attr_put_u16(nlh, VDPA_ATTR_DEV_NET_CFG_MTU, opts->mtu); - } - - static int vdpa_argv_parse(struct vdpa *vdpa, int argc, char **argv, -@@ -263,6 +278,15 @@ static int vdpa_argv_parse(struct vdpa *vdpa, int argc, char **argv, - - NEXT_ARG_FWD(); - o_found |= VDPA_OPT_VDEV_MAC; -+ } else if ((strcmp(*argv, "mtu") == 0) && -+ (o_all & VDPA_OPT_VDEV_MTU)) { -+ NEXT_ARG_FWD(); -+ err = vdpa_argv_u16(vdpa, argc, argv, &opts->mtu); -+ if (err) -+ return err; -+ -+ NEXT_ARG_FWD(); -+ o_found |= VDPA_OPT_VDEV_MTU; - } else { - fprintf(stderr, "Unknown option \"%s\"\n", *argv); - return -EINVAL; -@@ -443,7 +467,7 @@ static int cmd_mgmtdev(struct vdpa *vdpa, int argc, char **argv) - static void cmd_dev_help(void) - { - fprintf(stderr, "Usage: vdpa dev show [ DEV ]\n"); -- fprintf(stderr, " vdpa dev add name NAME mgmtdev MANAGEMENTDEV [ mac MACADDR ]\n"); -+ fprintf(stderr, " vdpa dev add name NAME mgmtdev MANAGEMENTDEV [ mac MACADDR ] [ mtu MTU ]\n"); - fprintf(stderr, " vdpa dev del DEV\n"); - fprintf(stderr, "Usage: vdpa dev config COMMAND [ OPTIONS ]\n"); - } -@@ -533,7 +557,7 @@ static int cmd_dev_add(struct vdpa *vdpa, int argc, char **argv) - NLM_F_REQUEST | NLM_F_ACK); - err = vdpa_argv_parse_put(nlh, vdpa, argc, argv, - VDPA_OPT_VDEV_MGMTDEV_HANDLE | VDPA_OPT_VDEV_NAME, -- VDPA_OPT_VDEV_MAC); -+ VDPA_OPT_VDEV_MAC | VDPA_OPT_VDEV_MTU); - if (err) - return err; - --- -2.35.1 - diff --git a/SOURCES/0014-vdpa-Remove-unsupported-command-line-option.patch b/SOURCES/0014-vdpa-Remove-unsupported-command-line-option.patch deleted file mode 100644 index f9880b1..0000000 --- a/SOURCES/0014-vdpa-Remove-unsupported-command-line-option.patch +++ /dev/null @@ -1,46 +0,0 @@ -From d6ac4610e3da73d4a9591720ee18e6df9ac6575b Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 16:35:16 +0100 -Subject: [PATCH] vdpa: Remove unsupported command line option - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2059427 -Upstream Status: iproute2-next.git commit 2d1954c8 - -commit 2d1954c8a54b61ec271ab5b36976c4efdcf30066 -Author: Eli Cohen -Date: Sun Mar 13 19:12:16 2022 +0200 - - vdpa: Remove unsupported command line option - - "-v[erbose]" option is not supported. - Remove it. - - Reviewed-by: Parav Pandit - Reviewed-by: Jianbo Liu - Reviewed-by: Si-Wei Liu - Acked-by: Jason Wang - Signed-off-by: Eli Cohen - Signed-off-by: David Ahern ---- - vdpa/vdpa.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/vdpa/vdpa.c b/vdpa/vdpa.c -index f048e470..4ccb5648 100644 ---- a/vdpa/vdpa.c -+++ b/vdpa/vdpa.c -@@ -711,7 +711,7 @@ static void help(void) - fprintf(stderr, - "Usage: vdpa [ OPTIONS ] OBJECT { COMMAND | help }\n" - "where OBJECT := { mgmtdev | dev }\n" -- " OPTIONS := { -V[ersion] | -n[o-nice-names] | -j[son] | -p[retty] | -v[erbose] }\n"); -+ " OPTIONS := { -V[ersion] | -n[o-nice-names] | -j[son] | -p[retty] }\n"); - } - - static int vdpa_cmd(struct vdpa *vdpa, int argc, char **argv) --- -2.35.1 - diff --git a/SOURCES/0015-vdpa-Allow-for-printing-negotiated-features-of-a-dev.patch b/SOURCES/0015-vdpa-Allow-for-printing-negotiated-features-of-a-dev.patch deleted file mode 100644 index be9e550..0000000 --- a/SOURCES/0015-vdpa-Allow-for-printing-negotiated-features-of-a-dev.patch +++ /dev/null @@ -1,224 +0,0 @@ -From 5a42cc6a5ec79fd0f93904f19b8954c772d931eb Mon Sep 17 00:00:00 2001 -Message-Id: <5a42cc6a5ec79fd0f93904f19b8954c772d931eb.1647984433.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 16:35:16 +0100 -Subject: [PATCH] vdpa: Allow for printing negotiated features of a device - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2059427 -Upstream Status: iproute2-next.git commit bd91c764 - -commit bd91c764718997adaa1d86eee5c585e67ca85356 -Author: Eli Cohen -Date: Sun Mar 13 19:12:17 2022 +0200 - - vdpa: Allow for printing negotiated features of a device - - When reading the configuration of a vdpa device, check if the - VDPA_ATTR_DEV_NEGOTIATED_FEATURES is available. If it is, parse the - feature bits and print a string representation of each of the feature - bits. - - We keep the strings in two different arrays. One for net device related - devices and one for generic feature bits. - - In this patch we parse only net device specific features. Support for - other devices can be added later. If the device queried is not a net - device, we print its bit number only. - - Examples: - 1. Standard presentation - $ vdpa dev config show vdpa-a - vdpa-a: mac 00:00:00:00:88:88 link up link_announce false max_vq_pairs 2 mtu 9000 - negotiated_features CSUM GUEST_CSUM MTU MAC HOST_TSO4 HOST_TSO6 STATUS \ - CTRL_VQ MQ CTRL_MAC_ADDR VERSION_1 ACCESS_PLATFORM - - 2. json output - $ vdpa -j dev config show vdpa-a - {"config":{"vdpa-a":{"mac":"00:00:00:00:88:88","link":"up","link_announce":false,\ - "max_vq_pairs":2,"mtu":9000,"negotiated_features":["CSUM","GUEST_CSUM",\ - "MTU","MAC","HOST_TSO4","HOST_TSO6","STATUS","CTRL_VQ","MQ","CTRL_MAC_ADDR",\ - "VERSION_1","ACCESS_PLATFORM"]}}} - - 3. Pretty json - $ vdpa -jp dev config show vdpa-a - { - "config": { - "vdpa-a": { - "mac": "00:00:00:00:88:88", - "link ": "up", - "link_announce ": false, - "max_vq_pairs": 2, - "mtu": 9000, - "negotiated_features": [ - "CSUM","GUEST_CSUM","MTU","MAC","HOST_TSO4","HOST_TSO6","STATUS","CTRL_VQ",\ - "MQ","CTRL_MAC_ADDR","VERSION_1","ACCESS_PLATFORM" ] - } - } - } - - Reviewed-by: Si-Wei Liu - Acked-by: Jason Wang - Signed-off-by: Eli Cohen - Signed-off-by: David Ahern ---- - vdpa/vdpa.c | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 103 insertions(+), 2 deletions(-) - -diff --git a/vdpa/vdpa.c b/vdpa/vdpa.c -index 4ccb5648..40078b1c 100644 ---- a/vdpa/vdpa.c -+++ b/vdpa/vdpa.c -@@ -10,6 +10,8 @@ - #include - #include - #include -+#include -+#include - #include "mnl_utils.h" - #include - -@@ -78,6 +80,7 @@ static const enum mnl_attr_data_type vdpa_policy[VDPA_ATTR_MAX + 1] = { - [VDPA_ATTR_DEV_VENDOR_ID] = MNL_TYPE_U32, - [VDPA_ATTR_DEV_MAX_VQS] = MNL_TYPE_U32, - [VDPA_ATTR_DEV_MAX_VQ_SIZE] = MNL_TYPE_U16, -+ [VDPA_ATTR_DEV_NEGOTIATED_FEATURES] = MNL_TYPE_U64, - }; - - static int attr_cb(const struct nlattr *attr, void *data) -@@ -385,6 +388,94 @@ static const char *parse_class(int num) - return class ? class : "< unknown class >"; - } - -+static const char * const net_feature_strs[64] = { -+ [VIRTIO_NET_F_CSUM] = "CSUM", -+ [VIRTIO_NET_F_GUEST_CSUM] = "GUEST_CSUM", -+ [VIRTIO_NET_F_CTRL_GUEST_OFFLOADS] = "CTRL_GUEST_OFFLOADS", -+ [VIRTIO_NET_F_MTU] = "MTU", -+ [VIRTIO_NET_F_MAC] = "MAC", -+ [VIRTIO_NET_F_GUEST_TSO4] = "GUEST_TSO4", -+ [VIRTIO_NET_F_GUEST_TSO6] = "GUEST_TSO6", -+ [VIRTIO_NET_F_GUEST_ECN] = "GUEST_ECN", -+ [VIRTIO_NET_F_GUEST_UFO] = "GUEST_UFO", -+ [VIRTIO_NET_F_HOST_TSO4] = "HOST_TSO4", -+ [VIRTIO_NET_F_HOST_TSO6] = "HOST_TSO6", -+ [VIRTIO_NET_F_HOST_ECN] = "HOST_ECN", -+ [VIRTIO_NET_F_HOST_UFO] = "HOST_UFO", -+ [VIRTIO_NET_F_MRG_RXBUF] = "MRG_RXBUF", -+ [VIRTIO_NET_F_STATUS] = "STATUS", -+ [VIRTIO_NET_F_CTRL_VQ] = "CTRL_VQ", -+ [VIRTIO_NET_F_CTRL_RX] = "CTRL_RX", -+ [VIRTIO_NET_F_CTRL_VLAN] = "CTRL_VLAN", -+ [VIRTIO_NET_F_CTRL_RX_EXTRA] = "CTRL_RX_EXTRA", -+ [VIRTIO_NET_F_GUEST_ANNOUNCE] = "GUEST_ANNOUNCE", -+ [VIRTIO_NET_F_MQ] = "MQ", -+ [VIRTIO_F_NOTIFY_ON_EMPTY] = "NOTIFY_ON_EMPTY", -+ [VIRTIO_NET_F_CTRL_MAC_ADDR] = "CTRL_MAC_ADDR", -+ [VIRTIO_F_ANY_LAYOUT] = "ANY_LAYOUT", -+ [VIRTIO_NET_F_RSC_EXT] = "RSC_EXT", -+ [VIRTIO_NET_F_HASH_REPORT] = "HASH_REPORT", -+ [VIRTIO_NET_F_RSS] = "RSS", -+ [VIRTIO_NET_F_STANDBY] = "STANDBY", -+ [VIRTIO_NET_F_SPEED_DUPLEX] = "SPEED_DUPLEX", -+}; -+ -+#define VIRTIO_F_IN_ORDER 35 -+#define VIRTIO_F_NOTIFICATION_DATA 38 -+#define VDPA_EXT_FEATURES_SZ (VIRTIO_TRANSPORT_F_END - \ -+ VIRTIO_TRANSPORT_F_START + 1) -+ -+static const char * const ext_feature_strs[VDPA_EXT_FEATURES_SZ] = { -+ [VIRTIO_RING_F_INDIRECT_DESC - VIRTIO_TRANSPORT_F_START] = "RING_INDIRECT_DESC", -+ [VIRTIO_RING_F_EVENT_IDX - VIRTIO_TRANSPORT_F_START] = "RING_EVENT_IDX", -+ [VIRTIO_F_VERSION_1 - VIRTIO_TRANSPORT_F_START] = "VERSION_1", -+ [VIRTIO_F_ACCESS_PLATFORM - VIRTIO_TRANSPORT_F_START] = "ACCESS_PLATFORM", -+ [VIRTIO_F_RING_PACKED - VIRTIO_TRANSPORT_F_START] = "RING_PACKED", -+ [VIRTIO_F_IN_ORDER - VIRTIO_TRANSPORT_F_START] = "IN_ORDER", -+ [VIRTIO_F_ORDER_PLATFORM - VIRTIO_TRANSPORT_F_START] = "ORDER_PLATFORM", -+ [VIRTIO_F_SR_IOV - VIRTIO_TRANSPORT_F_START] = "SR_IOV", -+ [VIRTIO_F_NOTIFICATION_DATA - VIRTIO_TRANSPORT_F_START] = "NOTIFICATION_DATA", -+}; -+ -+static const char * const *dev_to_feature_str[] = { -+ [VIRTIO_ID_NET] = net_feature_strs, -+}; -+ -+#define NUM_FEATURE_BITS 64 -+ -+static void print_features(struct vdpa *vdpa, uint64_t features, bool mgmtdevf, -+ uint16_t dev_id) -+{ -+ const char * const *feature_strs = NULL; -+ const char *s; -+ int i; -+ -+ if (dev_id < ARRAY_SIZE(dev_to_feature_str)) -+ feature_strs = dev_to_feature_str[dev_id]; -+ -+ if (mgmtdevf) -+ pr_out_array_start(vdpa, "dev_features"); -+ else -+ pr_out_array_start(vdpa, "negotiated_features"); -+ -+ for (i = 0; i < NUM_FEATURE_BITS; i++) { -+ if (!(features & (1ULL << i))) -+ continue; -+ -+ if (i < VIRTIO_TRANSPORT_F_START || i > VIRTIO_TRANSPORT_F_END) -+ s = feature_strs ? feature_strs[i] : NULL; -+ else -+ s = ext_feature_strs[i - VIRTIO_TRANSPORT_F_START]; -+ -+ if (!s) -+ print_uint(PRINT_ANY, NULL, " bit_%d", i); -+ else -+ print_string(PRINT_ANY, NULL, " %s", s); -+ } -+ -+ pr_out_array_end(vdpa); -+} -+ - static void pr_out_mgmtdev_show(struct vdpa *vdpa, const struct nlmsghdr *nlh, - struct nlattr **tb) - { -@@ -579,9 +670,10 @@ static int cmd_dev_del(struct vdpa *vdpa, int argc, char **argv) - return mnlu_gen_socket_sndrcv(&vdpa->nlg, nlh, NULL, NULL); - } - --static void pr_out_dev_net_config(struct nlattr **tb) -+static void pr_out_dev_net_config(struct vdpa *vdpa, struct nlattr **tb) - { - SPRINT_BUF(macaddr); -+ uint64_t val_u64; - uint16_t val_u16; - - if (tb[VDPA_ATTR_DEV_NET_CFG_MACADDR]) { -@@ -610,6 +702,15 @@ static void pr_out_dev_net_config(struct nlattr **tb) - val_u16 = mnl_attr_get_u16(tb[VDPA_ATTR_DEV_NET_CFG_MTU]); - print_uint(PRINT_ANY, "mtu", "mtu %d ", val_u16); - } -+ if (tb[VDPA_ATTR_DEV_NEGOTIATED_FEATURES]) { -+ uint16_t dev_id = 0; -+ -+ if (tb[VDPA_ATTR_DEV_ID]) -+ dev_id = mnl_attr_get_u32(tb[VDPA_ATTR_DEV_ID]); -+ -+ val_u64 = mnl_attr_get_u64(tb[VDPA_ATTR_DEV_NEGOTIATED_FEATURES]); -+ print_features(vdpa, val_u64, false, dev_id); -+ } - } - - static void pr_out_dev_config(struct vdpa *vdpa, struct nlattr **tb) -@@ -619,7 +720,7 @@ static void pr_out_dev_config(struct vdpa *vdpa, struct nlattr **tb) - pr_out_vdev_handle_start(vdpa, tb); - switch (device_id) { - case VIRTIO_ID_NET: -- pr_out_dev_net_config(tb); -+ pr_out_dev_net_config(vdpa, tb); - break; - default: - break; --- -2.35.1 - diff --git a/SOURCES/0016-vdpa-Support-for-configuring-max-VQ-pairs-for-a-devi.patch b/SOURCES/0016-vdpa-Support-for-configuring-max-VQ-pairs-for-a-devi.patch deleted file mode 100644 index 037fb2e..0000000 --- a/SOURCES/0016-vdpa-Support-for-configuring-max-VQ-pairs-for-a-devi.patch +++ /dev/null @@ -1,127 +0,0 @@ -From 23f80a84bf306e32fe02b78c2d02555c5d35ffb4 Mon Sep 17 00:00:00 2001 -Message-Id: <23f80a84bf306e32fe02b78c2d02555c5d35ffb4.1647984433.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 16:35:16 +0100 -Subject: [PATCH] vdpa: Support for configuring max VQ pairs for a device - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2059427 -Upstream Status: iproute2-next.git commit 16482fd4 - -commit 16482fd4df1132749575c49797c8d167c316d3f7 -Author: Eli Cohen -Date: Sun Mar 13 19:12:18 2022 +0200 - - vdpa: Support for configuring max VQ pairs for a device - - Use VDPA_ATTR_DEV_MGMTDEV_MAX_VQS to specify max number of virtqueue - pairs to configure for a vdpa device when adding a device. - - Examples: - 1. Create a device with 3 virtqueue pairs: - $ vdpa dev add name vdpa-a mgmtdev auxiliary/mlx5_core.sf.1 max_vqp 3 - - 2. Read the configuration of a vdpa device - $ vdpa dev config show vdpa-a - vdpa-a: mac 00:00:00:00:88:88 link up link_announce false max_vq_pairs 3 \ - mtu 1500 - negotiated_features CSUM GUEST_CSUM MTU MAC HOST_TSO4 HOST_TSO6 STATUS \ - CTRL_VQ MQ CTRL_MAC_ADDR VERSION_1 ACCESS_PLATFORM - - Reviewed-by: Si-Wei Liu - Acked-by: Jason Wang - Signed-off-by: Eli Cohen - Signed-off-by: David Ahern ---- - vdpa/vdpa.c | 25 ++++++++++++++++++++++++- - 1 file changed, 24 insertions(+), 1 deletion(-) - -diff --git a/vdpa/vdpa.c b/vdpa/vdpa.c -index 40078b1c..9985b6ca 100644 ---- a/vdpa/vdpa.c -+++ b/vdpa/vdpa.c -@@ -25,6 +25,7 @@ - #define VDPA_OPT_VDEV_HANDLE BIT(3) - #define VDPA_OPT_VDEV_MAC BIT(4) - #define VDPA_OPT_VDEV_MTU BIT(5) -+#define VDPA_OPT_MAX_VQP BIT(6) - - struct vdpa_opts { - uint64_t present; /* flags of present items */ -@@ -34,6 +35,7 @@ struct vdpa_opts { - unsigned int device_id; - char mac[ETH_ALEN]; - uint16_t mtu; -+ uint16_t max_vqp; - }; - - struct vdpa { -@@ -81,6 +83,7 @@ static const enum mnl_attr_data_type vdpa_policy[VDPA_ATTR_MAX + 1] = { - [VDPA_ATTR_DEV_MAX_VQS] = MNL_TYPE_U32, - [VDPA_ATTR_DEV_MAX_VQ_SIZE] = MNL_TYPE_U16, - [VDPA_ATTR_DEV_NEGOTIATED_FEATURES] = MNL_TYPE_U64, -+ [VDPA_ATTR_DEV_MGMTDEV_MAX_VQS] = MNL_TYPE_U32, - }; - - static int attr_cb(const struct nlattr *attr, void *data) -@@ -222,6 +225,8 @@ static void vdpa_opts_put(struct nlmsghdr *nlh, struct vdpa *vdpa) - sizeof(opts->mac), opts->mac); - if (opts->present & VDPA_OPT_VDEV_MTU) - mnl_attr_put_u16(nlh, VDPA_ATTR_DEV_NET_CFG_MTU, opts->mtu); -+ if (opts->present & VDPA_OPT_MAX_VQP) -+ mnl_attr_put_u16(nlh, VDPA_ATTR_DEV_NET_CFG_MAX_VQP, opts->max_vqp); - } - - static int vdpa_argv_parse(struct vdpa *vdpa, int argc, char **argv, -@@ -290,6 +295,14 @@ static int vdpa_argv_parse(struct vdpa *vdpa, int argc, char **argv, - - NEXT_ARG_FWD(); - o_found |= VDPA_OPT_VDEV_MTU; -+ } else if ((matches(*argv, "max_vqp") == 0) && (o_optional & VDPA_OPT_MAX_VQP)) { -+ NEXT_ARG_FWD(); -+ err = vdpa_argv_u16(vdpa, argc, argv, &opts->max_vqp); -+ if (err) -+ return err; -+ -+ NEXT_ARG_FWD(); -+ o_found |= VDPA_OPT_MAX_VQP; - } else { - fprintf(stderr, "Unknown option \"%s\"\n", *argv); - return -EINVAL; -@@ -499,6 +512,14 @@ static void pr_out_mgmtdev_show(struct vdpa *vdpa, const struct nlmsghdr *nlh, - pr_out_array_end(vdpa); - } - -+ if (tb[VDPA_ATTR_DEV_MGMTDEV_MAX_VQS]) { -+ uint32_t num_vqs; -+ -+ print_nl(); -+ num_vqs = mnl_attr_get_u32(tb[VDPA_ATTR_DEV_MGMTDEV_MAX_VQS]); -+ print_uint(PRINT_ANY, "max_supported_vqs", " max_supported_vqs %d", num_vqs); -+ } -+ - pr_out_handle_end(vdpa); - } - -@@ -559,6 +580,7 @@ static void cmd_dev_help(void) - { - fprintf(stderr, "Usage: vdpa dev show [ DEV ]\n"); - fprintf(stderr, " vdpa dev add name NAME mgmtdev MANAGEMENTDEV [ mac MACADDR ] [ mtu MTU ]\n"); -+ fprintf(stderr, " [ max_vqp MAX_VQ_PAIRS ]\n"); - fprintf(stderr, " vdpa dev del DEV\n"); - fprintf(stderr, "Usage: vdpa dev config COMMAND [ OPTIONS ]\n"); - } -@@ -648,7 +670,8 @@ static int cmd_dev_add(struct vdpa *vdpa, int argc, char **argv) - NLM_F_REQUEST | NLM_F_ACK); - err = vdpa_argv_parse_put(nlh, vdpa, argc, argv, - VDPA_OPT_VDEV_MGMTDEV_HANDLE | VDPA_OPT_VDEV_NAME, -- VDPA_OPT_VDEV_MAC | VDPA_OPT_VDEV_MTU); -+ VDPA_OPT_VDEV_MAC | VDPA_OPT_VDEV_MTU | -+ VDPA_OPT_MAX_VQP); - if (err) - return err; - --- -2.35.1 - diff --git a/SOURCES/0017-vdpa-Support-reading-device-features.patch b/SOURCES/0017-vdpa-Support-reading-device-features.patch deleted file mode 100644 index 66ee427..0000000 --- a/SOURCES/0017-vdpa-Support-reading-device-features.patch +++ /dev/null @@ -1,99 +0,0 @@ -From 03beee452fb8b857906d8cb4bcfd8e3db6a9fdd1 Mon Sep 17 00:00:00 2001 -Message-Id: <03beee452fb8b857906d8cb4bcfd8e3db6a9fdd1.1647984433.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 16:35:16 +0100 -Subject: [PATCH] vdpa: Support reading device features - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2059427 -Upstream Status: iproute2-next.git commit 56eb8bf4 - -commit 56eb8bf45aa3d509eb119201341d0323ea81ef84 -Author: Eli Cohen -Date: Sun Mar 13 19:12:19 2022 +0200 - - vdpa: Support reading device features - - When showing the available management devices, check if - VDPA_ATTR_DEV_SUPPORTED_FEATURES feature is available and print the - supported features for a management device. - - Examples: - $ vdpa mgmtdev show - auxiliary/mlx5_core.sf.1: - supported_classes net - max_supported_vqs 257 - dev_features CSUM GUEST_CSUM MTU HOST_TSO4 HOST_TSO6 STATUS CTRL_VQ MQ \ - CTRL_MAC_ADDR VERSION_1 ACCESS_PLATFORM - - $ vdpa -jp mgmtdev show - { - "mgmtdev": { - "auxiliary/mlx5_core.sf.1": { - "supported_classes": [ "net" ], - "max_supported_vqs": 257, - "dev_features": [ - "CSUM","GUEST_CSUM","MTU","HOST_TSO4","HOST_TSO6","STATUS","CTRL_VQ","MQ",\ - "CTRL_MAC_ADDR","VERSION_1","ACCESS_PLATFORM" ] - } - } - } - - Reviewed-by: Si-Wei Liu - Acked-by: Jason Wang - Signed-off-by: Eli Cohen - Signed-off-by: David Ahern ---- - vdpa/vdpa.c | 15 +++++++++++++-- - 1 file changed, 13 insertions(+), 2 deletions(-) - -diff --git a/vdpa/vdpa.c b/vdpa/vdpa.c -index 9985b6ca..3ae1b78f 100644 ---- a/vdpa/vdpa.c -+++ b/vdpa/vdpa.c -@@ -84,6 +84,7 @@ static const enum mnl_attr_data_type vdpa_policy[VDPA_ATTR_MAX + 1] = { - [VDPA_ATTR_DEV_MAX_VQ_SIZE] = MNL_TYPE_U16, - [VDPA_ATTR_DEV_NEGOTIATED_FEATURES] = MNL_TYPE_U64, - [VDPA_ATTR_DEV_MGMTDEV_MAX_VQS] = MNL_TYPE_U32, -+ [VDPA_ATTR_DEV_SUPPORTED_FEATURES] = MNL_TYPE_U64, - }; - - static int attr_cb(const struct nlattr *attr, void *data) -@@ -492,14 +493,14 @@ static void print_features(struct vdpa *vdpa, uint64_t features, bool mgmtdevf, - static void pr_out_mgmtdev_show(struct vdpa *vdpa, const struct nlmsghdr *nlh, - struct nlattr **tb) - { -+ uint64_t classes = 0; - const char *class; - unsigned int i; - - pr_out_handle_start(vdpa, tb); - - if (tb[VDPA_ATTR_MGMTDEV_SUPPORTED_CLASSES]) { -- uint64_t classes = mnl_attr_get_u64(tb[VDPA_ATTR_MGMTDEV_SUPPORTED_CLASSES]); -- -+ classes = mnl_attr_get_u64(tb[VDPA_ATTR_MGMTDEV_SUPPORTED_CLASSES]); - pr_out_array_start(vdpa, "supported_classes"); - - for (i = 1; i < 64; i++) { -@@ -520,6 +521,16 @@ static void pr_out_mgmtdev_show(struct vdpa *vdpa, const struct nlmsghdr *nlh, - print_uint(PRINT_ANY, "max_supported_vqs", " max_supported_vqs %d", num_vqs); - } - -+ if (tb[VDPA_ATTR_DEV_SUPPORTED_FEATURES]) { -+ uint64_t features; -+ -+ features = mnl_attr_get_u64(tb[VDPA_ATTR_DEV_SUPPORTED_FEATURES]); -+ if (classes & BIT(VIRTIO_ID_NET)) -+ print_features(vdpa, features, true, VIRTIO_ID_NET); -+ else -+ print_features(vdpa, features, true, 0); -+ } -+ - pr_out_handle_end(vdpa); - } - --- -2.35.1 - diff --git a/SOURCES/0018-vdpa-Update-man-page-with-added-support-to-configure.patch b/SOURCES/0018-vdpa-Update-man-page-with-added-support-to-configure.patch deleted file mode 100644 index b9a225a..0000000 --- a/SOURCES/0018-vdpa-Update-man-page-with-added-support-to-configure.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 132573d6641577577e6abc2c6808936239ba253e Mon Sep 17 00:00:00 2001 -Message-Id: <132573d6641577577e6abc2c6808936239ba253e.1647984433.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 16:35:16 +0100 -Subject: [PATCH] vdpa: Update man page with added support to configure max vq - pair - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2059427 -Upstream Status: iproute2-next.git commit 8130653d - -commit 8130653dabe6726b46b7b19c31d85e33a67175e3 -Author: Eli Cohen -Date: Tue Mar 15 15:13:58 2022 +0200 - - vdpa: Update man page with added support to configure max vq pair - - Update man page to include information how to configure the max - virtqueue pairs for a vdpa device when creating one. - - Signed-off-by: Eli Cohen - Signed-off-by: David Ahern ---- - man/man8/vdpa-dev.8 | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/man/man8/vdpa-dev.8 b/man/man8/vdpa-dev.8 -index aa21ae3a..432867c6 100644 ---- a/man/man8/vdpa-dev.8 -+++ b/man/man8/vdpa-dev.8 -@@ -33,6 +33,7 @@ vdpa-dev \- vdpa device configuration - .I MGMTDEV - .RI "[ mac " MACADDR " ]" - .RI "[ mtu " MTU " ]" -+.RI "[ max_vqp " MAX_VQ_PAIRS " ]" - - .ti -8 - .B vdpa dev del -@@ -119,6 +120,11 @@ vdpa dev add name foo mgmtdev vdpa_sim_net mac 00:11:22:33:44:55 mtu 9000 - Add the vdpa device named foo on the management device vdpa_sim_net with mac address of 00:11:22:33:44:55 and mtu of 9000 bytes. - .RE - .PP -+vdpa dev add name foo mgmtdev auxiliary/mlx5_core.sf.1 mac 00:11:22:33:44:55 max_vqp 8 -+.RS 4 -+Add the vdpa device named foo on the management device auxiliary/mlx5_core.sf.1 with mac address of 00:11:22:33:44:55 and max 8 virtqueue pairs -+.RE -+.PP - vdpa dev del foo - .RS 4 - Delete the vdpa device named foo which was previously created. --- -2.35.1 - diff --git a/SPECS/iproute.spec b/SPECS/iproute.spec index be6bce4..1d53687 100644 --- a/SPECS/iproute.spec +++ b/SPECS/iproute.spec @@ -1,31 +1,13 @@ Summary: Advanced IP routing and network device configuration tools Name: iproute -Version: 5.15.0 -Release: 2.2%{?dist}%{?buildid} +Version: 5.18.0 +Release: 1%{?dist}%{?buildid} %if 0%{?rhel} Group: Applications/System %endif URL: https://kernel.org/pub/linux/utils/net/%{name}2/ Source0: https://kernel.org/pub/linux/utils/net/%{name}2/%{name}2-%{version}.tar.xz Source1: rt_dsfield.deprecated -Patch0: 0001-configure-fix-parsing-issue-on-include_dir-option.patch -Patch1: 0002-configure-fix-parsing-issue-on-libbpf_dir-option.patch -Patch2: 0003-configure-fix-parsing-issue-with-more-than-one-value.patch -Patch3: 0004-configure-simplify-options-parsing.patch -Patch4: 0005-configure-support-param-value-style.patch -Patch5: 0006-configure-add-the-prefix-option.patch -Patch6: 0007-configure-add-the-libdir-option.patch -Patch7: 0008-Update-kernel-headers-and-import-virtio_net.patch -Patch8: 0009-vdpa-align-uapi-headers.patch -Patch9: 0010-uapi-update-vdpa.h.patch -Patch10: 0011-vdpa-Enable-user-to-query-vdpa-device-config-layout.patch -Patch11: 0012-vdpa-Enable-user-to-set-mac-address-of-vdpa-device.patch -Patch12: 0013-vdpa-Enable-user-to-set-mtu-of-the-vdpa-device.patch -Patch13: 0014-vdpa-Remove-unsupported-command-line-option.patch -Patch14: 0015-vdpa-Allow-for-printing-negotiated-features-of-a-dev.patch -Patch15: 0016-vdpa-Support-for-configuring-max-VQ-pairs-for-a-devi.patch -Patch16: 0017-vdpa-Support-reading-device-features.patch -Patch17: 0018-vdpa-Update-man-page-with-added-support-to-configure.patch License: GPLv2+ and Public Domain BuildRequires: bison @@ -131,6 +113,7 @@ cat %{SOURCE1} >>%{buildroot}%{_sysconfdir}/iproute2/rt_dsfield %attr(644,root,root) %config(noreplace) %{_sysconfdir}/iproute2/* %{_sbindir}/* %exclude %{_sbindir}/tc +%exclude %{_sbindir}/routel %{_datadir}/bash-completion/completions/devlink %files tc @@ -157,21 +140,8 @@ cat %{SOURCE1} >>%{buildroot}%{_sysconfdir}/iproute2/rt_dsfield %{_includedir}/iproute2/bpf_elf.h %changelog -* Tue Mar 22 2022 Andrea Claudi - 5.15.0-2.2.el9 -- Fix changelog - -* Tue Mar 22 2022 Andrea Claudi - 5.15.0-2.1.el9 -- vdpa: Update man page with added support to configure max vq pair (Andrea Claudi) [2059427] -- vdpa: Support reading device features (Andrea Claudi) [2059427] -- vdpa: Support for configuring max VQ pairs for a device (Andrea Claudi) [2059427] -- vdpa: Allow for printing negotiated features of a device (Andrea Claudi) [2059427] -- vdpa: Remove unsupported command line option (Andrea Claudi) [2059427] -- vdpa: Enable user to set mtu of the vdpa device (Andrea Claudi) [2059427] -- vdpa: Enable user to set mac address of vdpa device (Andrea Claudi) [2059427] -- vdpa: Enable user to query vdpa device config layout (Andrea Claudi) [2059427] -- uapi: update vdpa.h (Andrea Claudi) [2059427] -- vdpa: align uapi headers (Andrea Claudi) [2059427] -- Update kernel headers and import virtio_net (Andrea Claudi) [2059427] +* Wed Jun 15 2022 Andrea Claudi - 5.18.0-1.el9 +- New version 5.18.0 [2074608] * Thu Nov 25 2021 Andrea Claudi - 5.15.0-2.el9 - Fix gating.yaml [2009355]