From eea717780c2d93c047086c21ca1653c9b34e4019 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 8 Nov 2022 03:07:12 -0500 Subject: [PATCH] import iproute-5.18.0-1.el8 --- .gitignore | 2 +- .iproute.metadata | 2 +- ...-parsing-issue-on-include_dir-option.patch | 74 ---- ...x-parsing-issue-on-libbpf_dir-option.patch | 79 ---- ...rsing-issue-with-more-than-one-value.patch | 63 --- ...4-configure-simplify-options-parsing.patch | 114 ----- ...-configure-support-param-value-style.patch | 53 --- ...0006-configure-add-the-prefix-option.patch | 72 ---- ...0007-configure-add-the-libdir-option.patch | 151 ------- SOURCES/0008-vdpa-align-uapi-headers.patch | 141 ------- ...r-to-query-vdpa-device-config-layout.patch | 239 ----------- ...er-to-set-mac-address-of-vdpa-device.patch | 233 ---------- ...e-user-to-set-mtu-of-the-vdpa-device.patch | 158 ------- ...2-tc-u32-add-support-for-json-output.patch | 206 --------- ...support-in-print_raw-print_ipv4-prin.patch | 240 ----------- ...kernel-headers-and-import-virtio_net.patch | 397 ------------------ SOURCES/0015-uapi-update-vdpa.h.patch | 51 --- ...move-unsupported-command-line-option.patch | 46 -- ...rinting-negotiated-features-of-a-dev.patch | 224 ---------- ...-configuring-max-VQ-pairs-for-a-devi.patch | 127 ------ ...vdpa-Support-reading-device-features.patch | 99 ----- ...page-with-added-support-to-configure.patch | 54 --- ...-Fix-buffer-overflow-on-large-labels.patch | 48 --- SPECS/iproute.spec | 30 +- 24 files changed, 7 insertions(+), 2896 deletions(-) delete mode 100644 SOURCES/0001-configure-fix-parsing-issue-on-include_dir-option.patch delete mode 100644 SOURCES/0002-configure-fix-parsing-issue-on-libbpf_dir-option.patch delete mode 100644 SOURCES/0003-configure-fix-parsing-issue-with-more-than-one-value.patch delete mode 100644 SOURCES/0004-configure-simplify-options-parsing.patch delete mode 100644 SOURCES/0005-configure-support-param-value-style.patch delete mode 100644 SOURCES/0006-configure-add-the-prefix-option.patch delete mode 100644 SOURCES/0007-configure-add-the-libdir-option.patch delete mode 100644 SOURCES/0008-vdpa-align-uapi-headers.patch delete mode 100644 SOURCES/0009-vdpa-Enable-user-to-query-vdpa-device-config-layout.patch delete mode 100644 SOURCES/0010-vdpa-Enable-user-to-set-mac-address-of-vdpa-device.patch delete mode 100644 SOURCES/0011-vdpa-Enable-user-to-set-mtu-of-the-vdpa-device.patch delete mode 100644 SOURCES/0012-tc-u32-add-support-for-json-output.patch delete mode 100644 SOURCES/0013-tc-u32-add-json-support-in-print_raw-print_ipv4-prin.patch delete mode 100644 SOURCES/0014-Update-kernel-headers-and-import-virtio_net.patch delete mode 100644 SOURCES/0015-uapi-update-vdpa.h.patch delete mode 100644 SOURCES/0016-vdpa-Remove-unsupported-command-line-option.patch delete mode 100644 SOURCES/0017-vdpa-Allow-for-printing-negotiated-features-of-a-dev.patch delete mode 100644 SOURCES/0018-vdpa-Support-for-configuring-max-VQ-pairs-for-a-devi.patch delete mode 100644 SOURCES/0019-vdpa-Support-reading-device-features.patch delete mode 100644 SOURCES/0020-vdpa-Update-man-page-with-added-support-to-configure.patch delete mode 100644 SOURCES/0021-tc-flower-Fix-buffer-overflow-on-large-labels.patch 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 17cc699..0000000 --- a/SOURCES/0001-configure-fix-parsing-issue-on-include_dir-option.patch +++ /dev/null @@ -1,74 +0,0 @@ -From b30268eda844bdebbb8e5e4f5735e3b1bb666368 Mon Sep 17 00:00:00 2001 -Message-Id: -From: Andrea Claudi -Date: Tue, 23 Nov 2021 15:28:18 +0100 -Subject: [PATCH] configure: fix parsing issue on include_dir option - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2016061 -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 29f6df5..0000000 --- a/SOURCES/0002-configure-fix-parsing-issue-on-libbpf_dir-option.patch +++ /dev/null @@ -1,79 +0,0 @@ -From a9cf0f0c57cf978ebe2abfd4c5a1b7df94f0a8ac Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: -From: Andrea Claudi -Date: Tue, 23 Nov 2021 15:28:18 +0100 -Subject: [PATCH] configure: fix parsing issue on libbpf_dir option - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2016061 -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 1178cf1..0000000 --- a/SOURCES/0003-configure-fix-parsing-issue-with-more-than-one-value.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 56a144f7a352d4dbd1e08585e82fad4bd6677b52 Mon Sep 17 00:00:00 2001 -Message-Id: <56a144f7a352d4dbd1e08585e82fad4bd6677b52.1637678195.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Tue, 23 Nov 2021 15:28:18 +0100 -Subject: [PATCH] configure: fix parsing issue with more than one value per - option - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2016061 -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 f47758b..0000000 --- a/SOURCES/0004-configure-simplify-options-parsing.patch +++ /dev/null @@ -1,114 +0,0 @@ -From 1b4bdce40f9244823c464f2a36a0db7cd6ba427b Mon Sep 17 00:00:00 2001 -Message-Id: <1b4bdce40f9244823c464f2a36a0db7cd6ba427b.1637678195.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Tue, 23 Nov 2021 15:28:18 +0100 -Subject: [PATCH] configure: simplify options parsing - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2016061 -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 b3b8acf..0000000 --- a/SOURCES/0005-configure-support-param-value-style.patch +++ /dev/null @@ -1,53 +0,0 @@ -From fd03755c5b59a7c197dc9089494c08780f1669a7 Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: -From: Andrea Claudi -Date: Tue, 23 Nov 2021 15:28:18 +0100 -Subject: [PATCH] configure: support --param=value style - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2016061 -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 0954ad6..0000000 --- a/SOURCES/0006-configure-add-the-prefix-option.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 3be62dd57ef875f9cf4674f8665c5da48c4e2274 Mon Sep 17 00:00:00 2001 -Message-Id: <3be62dd57ef875f9cf4674f8665c5da48c4e2274.1637678195.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Tue, 23 Nov 2021 15:28:18 +0100 -Subject: [PATCH] configure: add the --prefix option - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2016061 -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 f008e77..0000000 --- a/SOURCES/0007-configure-add-the-libdir-option.patch +++ /dev/null @@ -1,151 +0,0 @@ -From f9649a5c15f7dcee4e684854fcc75a7a3fe27683 Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: -From: Andrea Claudi -Date: Tue, 23 Nov 2021 15:28:18 +0100 -Subject: [PATCH] configure: add the --libdir option - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2016061 -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-vdpa-align-uapi-headers.patch b/SOURCES/0008-vdpa-align-uapi-headers.patch deleted file mode 100644 index 1e4e43b..0000000 --- a/SOURCES/0008-vdpa-align-uapi-headers.patch +++ /dev/null @@ -1,141 +0,0 @@ -From 548e39858ecf9291494555466e6e931935b4a0ee Mon Sep 17 00:00:00 2001 -Message-Id: <548e39858ecf9291494555466e6e931935b4a0ee.1643220552.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Wed, 26 Jan 2022 10:37:45 +0100 -Subject: [PATCH] vdpa: align uapi headers - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2036880 -Upstream Status: iproute2.git commit fa58de9b0c73 - -commit 34672eae6ec8e885f76ae30af10f849720012dd6 -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.34.1 - diff --git a/SOURCES/0009-vdpa-Enable-user-to-query-vdpa-device-config-layout.patch b/SOURCES/0009-vdpa-Enable-user-to-query-vdpa-device-config-layout.patch deleted file mode 100644 index ca89499..0000000 --- a/SOURCES/0009-vdpa-Enable-user-to-query-vdpa-device-config-layout.patch +++ /dev/null @@ -1,239 +0,0 @@ -From e3610d3ea2c8d88c3dd61d845a682f74a1af1d1f Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: -From: Andrea Claudi -Date: Wed, 26 Jan 2022 10:39:38 +0100 -Subject: [PATCH] vdpa: Enable user to query vdpa device config layout - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2036880 -Upstream Status: iproute2.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.34.1 - diff --git a/SOURCES/0010-vdpa-Enable-user-to-set-mac-address-of-vdpa-device.patch b/SOURCES/0010-vdpa-Enable-user-to-set-mac-address-of-vdpa-device.patch deleted file mode 100644 index a98113d..0000000 --- a/SOURCES/0010-vdpa-Enable-user-to-set-mac-address-of-vdpa-device.patch +++ /dev/null @@ -1,233 +0,0 @@ -From 33a786460c3ef992e5a8d7a1be7ef5aac8860ba9 Mon Sep 17 00:00:00 2001 -Message-Id: <33a786460c3ef992e5a8d7a1be7ef5aac8860ba9.1643220552.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Wed, 26 Jan 2022 10:39:38 +0100 -Subject: [PATCH] vdpa: Enable user to set mac address of vdpa device - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2036880 -Upstream Status: iproute2.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.34.1 - diff --git a/SOURCES/0011-vdpa-Enable-user-to-set-mtu-of-the-vdpa-device.patch b/SOURCES/0011-vdpa-Enable-user-to-set-mtu-of-the-vdpa-device.patch deleted file mode 100644 index 8b90925..0000000 --- a/SOURCES/0011-vdpa-Enable-user-to-set-mtu-of-the-vdpa-device.patch +++ /dev/null @@ -1,158 +0,0 @@ -From 6af0b1f5f1848689ee3c4cd00af224309185c644 Mon Sep 17 00:00:00 2001 -Message-Id: <6af0b1f5f1848689ee3c4cd00af224309185c644.1643220552.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Wed, 26 Jan 2022 10:39:38 +0100 -Subject: [PATCH] vdpa: Enable user to set mtu of the vdpa device - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2036880 -Upstream Status: iproute2.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.34.1 - diff --git a/SOURCES/0012-tc-u32-add-support-for-json-output.patch b/SOURCES/0012-tc-u32-add-support-for-json-output.patch deleted file mode 100644 index 0e6efe0..0000000 --- a/SOURCES/0012-tc-u32-add-support-for-json-output.patch +++ /dev/null @@ -1,206 +0,0 @@ -From 0a250b280fbaf8e4d6ad173cf6d9e082658954b4 Mon Sep 17 00:00:00 2001 -Message-Id: <0a250b280fbaf8e4d6ad173cf6d9e082658954b4.1644243783.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 7 Feb 2022 15:16:36 +0100 -Subject: [PATCH] tc: u32: add support for json output - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1989591 -Upstream Status: unknown commit c733722b - -commit c733722b993cb82832722b1490cbc5002035fd20 -Author: Wen Liang -Date: Wed Jan 26 14:44:47 2022 -0500 - - tc: u32: add support for json output - - Currently u32 filter output does not support json. This commit uses - proper json functions to add support for it. - - `sprint_u32_handle` adds an extra space after the raw check, remove the - extra space. - - Signed-off-by: Wen Liang - Tested-by: Victor Nogueira - Signed-off-by: David Ahern ---- - tc/f_u32.c | 83 ++++++++++++++++++++++++++++++------------------------ - 1 file changed, 46 insertions(+), 37 deletions(-) - -diff --git a/tc/f_u32.c b/tc/f_u32.c -index a5747f67..11da202e 100644 ---- a/tc/f_u32.c -+++ b/tc/f_u32.c -@@ -109,7 +109,7 @@ static char *sprint_u32_handle(__u32 handle, char *buf) - } - } - if (show_raw) -- snprintf(b, bsize, "[%08x] ", handle); -+ snprintf(b, bsize, "[%08x]", handle); - return buf; - } - -@@ -1213,11 +1213,11 @@ static int u32_print_opt(struct filter_util *qu, FILE *f, struct rtattr *opt, - - if (handle) { - SPRINT_BUF(b1); -- fprintf(f, "fh %s ", sprint_u32_handle(handle, b1)); -+ print_string(PRINT_ANY, "fh", "fh %s ", sprint_u32_handle(handle, b1)); - } - - if (TC_U32_NODE(handle)) -- fprintf(f, "order %d ", TC_U32_NODE(handle)); -+ print_int(PRINT_ANY, "order", "order %d ", TC_U32_NODE(handle)); - - if (tb[TCA_U32_SEL]) { - if (RTA_PAYLOAD(tb[TCA_U32_SEL]) < sizeof(*sel)) -@@ -1227,15 +1227,15 @@ static int u32_print_opt(struct filter_util *qu, FILE *f, struct rtattr *opt, - } - - if (tb[TCA_U32_DIVISOR]) { -- fprintf(f, "ht divisor %d ", -- rta_getattr_u32(tb[TCA_U32_DIVISOR])); -+ __u32 htdivisor = rta_getattr_u32(tb[TCA_U32_DIVISOR]); -+ -+ print_int(PRINT_ANY, "ht_divisor", "ht divisor %d ", htdivisor); - } else if (tb[TCA_U32_HASH]) { - __u32 htid = rta_getattr_u32(tb[TCA_U32_HASH]); -- -- fprintf(f, "key ht %x bkt %x ", TC_U32_USERHTID(htid), -- TC_U32_HASH(htid)); -+ print_hex(PRINT_ANY, "key_ht", "key ht %x ", TC_U32_USERHTID(htid)); -+ print_hex(PRINT_ANY, "bkt", "bkt %x ", TC_U32_HASH(htid)); - } else { -- fprintf(f, "??? "); -+ fprintf(stderr, "divisor and hash missing "); - } - if (tb[TCA_U32_CLASSID]) { - SPRINT_BUF(b1); -@@ -1244,27 +1244,27 @@ static int u32_print_opt(struct filter_util *qu, FILE *f, struct rtattr *opt, - sprint_tc_classid(rta_getattr_u32(tb[TCA_U32_CLASSID]), - b1)); - } else if (sel && sel->flags & TC_U32_TERMINAL) { -- fprintf(f, "terminal flowid ??? "); -+ print_string(PRINT_FP, NULL, "terminal flowid ", NULL); - } - if (tb[TCA_U32_LINK]) { - SPRINT_BUF(b1); -- fprintf(f, "link %s ", -- sprint_u32_handle(rta_getattr_u32(tb[TCA_U32_LINK]), -- b1)); -+ char *link = sprint_u32_handle(rta_getattr_u32(tb[TCA_U32_LINK]), b1); -+ -+ print_string(PRINT_ANY, "link", "link %s ", link); - } - - if (tb[TCA_U32_FLAGS]) { - __u32 flags = rta_getattr_u32(tb[TCA_U32_FLAGS]); - - if (flags & TCA_CLS_FLAGS_SKIP_HW) -- fprintf(f, "skip_hw "); -+ print_bool(PRINT_ANY, "skip_hw", "skip_hw ", true); - if (flags & TCA_CLS_FLAGS_SKIP_SW) -- fprintf(f, "skip_sw "); -+ print_bool(PRINT_ANY, "skip_sw", "skip_sw ", true); - - if (flags & TCA_CLS_FLAGS_IN_HW) -- fprintf(f, "in_hw "); -+ print_bool(PRINT_ANY, "in_hw", "in_hw ", true); - else if (flags & TCA_CLS_FLAGS_NOT_IN_HW) -- fprintf(f, "not_in_hw "); -+ print_bool(PRINT_ANY, "not_in_hw", "not_in_hw ", true); - } - - if (tb[TCA_U32_PCNT]) { -@@ -1275,10 +1275,10 @@ static int u32_print_opt(struct filter_util *qu, FILE *f, struct rtattr *opt, - pf = RTA_DATA(tb[TCA_U32_PCNT]); - } - -- if (sel && show_stats && NULL != pf) -- fprintf(f, " (rule hit %llu success %llu)", -- (unsigned long long) pf->rcnt, -- (unsigned long long) pf->rhit); -+ if (sel && show_stats && NULL != pf) { -+ print_u64(PRINT_ANY, "rule_hit", "(rule hit %llu ", pf->rcnt); -+ print_u64(PRINT_ANY, "success", "success %llu)", pf->rhit); -+ } - - if (tb[TCA_U32_MARK]) { - struct tc_u32_mark *mark = RTA_DATA(tb[TCA_U32_MARK]); -@@ -1286,8 +1286,10 @@ static int u32_print_opt(struct filter_util *qu, FILE *f, struct rtattr *opt, - if (RTA_PAYLOAD(tb[TCA_U32_MARK]) < sizeof(*mark)) { - fprintf(f, "\n Invalid mark (kernel&iproute2 mismatch)\n"); - } else { -- fprintf(f, "\n mark 0x%04x 0x%04x (success %d)", -- mark->val, mark->mask, mark->success); -+ print_nl(); -+ print_0xhex(PRINT_ANY, "fwmark_value", " mark 0x%04x ", mark->val); -+ print_0xhex(PRINT_ANY, "fwmark_mask", "0x%04x ", mark->mask); -+ print_int(PRINT_ANY, "fwmark_success", "(success %d)", mark->success); - } - } - -@@ -1298,38 +1300,45 @@ static int u32_print_opt(struct filter_util *qu, FILE *f, struct rtattr *opt, - for (i = 0; i < sel->nkeys; i++) { - show_keys(f, sel->keys + i); - if (show_stats && NULL != pf) -- fprintf(f, " (success %llu ) ", -- (unsigned long long) pf->kcnts[i]); -+ print_u64(PRINT_ANY, "success", " (success %llu ) ", -+ pf->kcnts[i]); - } - } - - if (sel->flags & (TC_U32_VAROFFSET | TC_U32_OFFSET)) { -- fprintf(f, "\n offset "); -- if (sel->flags & TC_U32_VAROFFSET) -- fprintf(f, "%04x>>%d at %d ", -- ntohs(sel->offmask), -- sel->offshift, sel->offoff); -+ print_nl(); -+ print_string(PRINT_ANY, NULL, "%s", " offset "); -+ if (sel->flags & TC_U32_VAROFFSET) { -+ print_hex(PRINT_ANY, "offset_mask", "%04x", ntohs(sel->offmask)); -+ print_int(PRINT_ANY, "offset_shift", ">>%d ", sel->offshift); -+ print_int(PRINT_ANY, "offset_off", "at %d ", sel->offoff); -+ } - if (sel->off) -- fprintf(f, "plus %d ", sel->off); -+ print_int(PRINT_ANY, "plus", "plus %d ", sel->off); - } - if (sel->flags & TC_U32_EAT) -- fprintf(f, " eat "); -+ print_string(PRINT_ANY, NULL, "%s", " eat "); - - if (sel->hmask) { -- fprintf(f, "\n hash mask %08x at %d ", -- (unsigned int)htonl(sel->hmask), sel->hoff); -+ print_nl(); -+ unsigned int hmask = (unsigned int)htonl(sel->hmask); -+ -+ print_hex(PRINT_ANY, "hash_mask", " hash mask %08x ", hmask); -+ print_int(PRINT_ANY, "hash_off", "at %d ", sel->hoff); - } - } - - if (tb[TCA_U32_POLICE]) { -- fprintf(f, "\n"); -+ print_nl(); - tc_print_police(f, tb[TCA_U32_POLICE]); - } - - if (tb[TCA_U32_INDEV]) { - struct rtattr *idev = tb[TCA_U32_INDEV]; -- -- fprintf(f, "\n input dev %s\n", rta_getattr_str(idev)); -+ print_nl(); -+ print_string(PRINT_ANY, "input_dev", " input dev %s", -+ rta_getattr_str(idev)); -+ print_nl(); - } - - if (tb[TCA_U32_ACT]) --- -2.34.1 - diff --git a/SOURCES/0013-tc-u32-add-json-support-in-print_raw-print_ipv4-prin.patch b/SOURCES/0013-tc-u32-add-json-support-in-print_raw-print_ipv4-prin.patch deleted file mode 100644 index c5d48b1..0000000 --- a/SOURCES/0013-tc-u32-add-json-support-in-print_raw-print_ipv4-prin.patch +++ /dev/null @@ -1,240 +0,0 @@ -From 66efa0a6dc179f814614fbd2f47c37d7e20e4405 Mon Sep 17 00:00:00 2001 -Message-Id: <66efa0a6dc179f814614fbd2f47c37d7e20e4405.1644243783.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 7 Feb 2022 15:16:36 +0100 -Subject: [PATCH] tc: u32: add json support in `print_raw`, `print_ipv4`, - `print_ipv6` - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1989591 -Upstream Status: unknown commit 721435dc - -commit 721435dcfd9274277af2fb6a4cec81d4a9bcc6b4 -Author: Wen Liang -Date: Wed Jan 26 14:44:48 2022 -0500 - - tc: u32: add json support in `print_raw`, `print_ipv4`, `print_ipv6` - - Currently the key struct of u32 filter does not support json. This - commit adds json support for showing key. - - Signed-off-by: Wen Liang - Tested-by: Victor Nogueira - Signed-off-by: David Ahern ---- - tc/f_u32.c | 121 ++++++++++++++++++++++++++++++++++------------------- - 1 file changed, 79 insertions(+), 42 deletions(-) - -diff --git a/tc/f_u32.c b/tc/f_u32.c -index 11da202e..d787eb91 100644 ---- a/tc/f_u32.c -+++ b/tc/f_u32.c -@@ -824,23 +824,27 @@ static void print_ipv4(FILE *f, const struct tc_u32_key *key) - { - char abuf[256]; - -+ open_json_object("match"); - switch (key->off) { - case 0: - switch (ntohl(key->mask)) { - case 0x0f000000: -- fprintf(f, "\n match IP ihl %u", -- ntohl(key->val) >> 24); -+ print_nl(); -+ print_uint(PRINT_ANY, "ip_ihl", " match IP ihl %u", -+ ntohl(key->val) >> 24); - return; - case 0x00ff0000: -- fprintf(f, "\n match IP dsfield %#x", -- ntohl(key->val) >> 16); -+ print_nl(); -+ print_0xhex(PRINT_ANY, "ip_dsfield", " match IP dsfield %#x", -+ ntohl(key->val) >> 16); - return; - } - break; - case 8: - if (ntohl(key->mask) == 0x00ff0000) { -- fprintf(f, "\n match IP protocol %d", -- ntohl(key->val) >> 16); -+ print_nl(); -+ print_int(PRINT_ANY, "ip_protocol", " match IP protocol %d", -+ ntohl(key->val) >> 16); - return; - } - break; -@@ -849,11 +853,21 @@ static void print_ipv4(FILE *f, const struct tc_u32_key *key) - int bits = mask2bits(key->mask); - - if (bits >= 0) { -- fprintf(f, "\n %s %s/%d", -- key->off == 12 ? "match IP src" : "match IP dst", -- inet_ntop(AF_INET, &key->val, -- abuf, sizeof(abuf)), -- bits); -+ const char *addr; -+ -+ if (key->off == 12) { -+ print_nl(); -+ print_null(PRINT_FP, NULL, " match IP src ", NULL); -+ open_json_object("src"); -+ } else { -+ print_nl(); -+ print_null(PRINT_FP, NULL, " match IP dst ", NULL); -+ open_json_object("dst"); -+ } -+ addr = inet_ntop(AF_INET, &key->val, abuf, sizeof(abuf)); -+ print_string(PRINT_ANY, "address", "%s", addr); -+ print_int(PRINT_ANY, "prefixlen", "/%d", bits); -+ close_json_object(); - return; - } - } -@@ -862,45 +876,52 @@ static void print_ipv4(FILE *f, const struct tc_u32_key *key) - case 20: - switch (ntohl(key->mask)) { - case 0x0000ffff: -- fprintf(f, "\n match dport %u", -- ntohl(key->val) & 0xffff); -+ print_uint(PRINT_ANY, "dport", "match dport %u", -+ ntohl(key->val) & 0xffff); - return; - case 0xffff0000: -- fprintf(f, "\n match sport %u", -- ntohl(key->val) >> 16); -+ print_nl(); -+ print_uint(PRINT_ANY, "sport", " match sport %u", -+ ntohl(key->val) >> 16); - return; - case 0xffffffff: -- fprintf(f, "\n match dport %u, match sport %u", -- ntohl(key->val) & 0xffff, -- ntohl(key->val) >> 16); -- -+ print_nl(); -+ print_uint(PRINT_ANY, "dport", " match dport %u, ", -+ ntohl(key->val) & 0xffff); -+ print_uint(PRINT_ANY, "sport", "match sport %u", -+ ntohl(key->val) >> 16); - return; - } - /* XXX: Default print_raw */ - } -+ close_json_object(); - } - - static void print_ipv6(FILE *f, const struct tc_u32_key *key) - { - char abuf[256]; - -+ open_json_object("match"); - switch (key->off) { - case 0: - switch (ntohl(key->mask)) { - case 0x0f000000: -- fprintf(f, "\n match IP ihl %u", -- ntohl(key->val) >> 24); -+ print_nl(); -+ print_uint(PRINT_ANY, "ip_ihl", " match IP ihl %u", -+ ntohl(key->val) >> 24); - return; - case 0x00ff0000: -- fprintf(f, "\n match IP dsfield %#x", -- ntohl(key->val) >> 16); -+ print_nl(); -+ print_0xhex(PRINT_ANY, "ip_dsfield", " match IP dsfield %#x", -+ ntohl(key->val) >> 16); - return; - } - break; - case 8: - if (ntohl(key->mask) == 0x00ff0000) { -- fprintf(f, "\n match IP protocol %d", -- ntohl(key->val) >> 16); -+ print_nl(); -+ print_int(PRINT_ANY, "ip_protocol", " match IP protocol %d", -+ ntohl(key->val) >> 16); - return; - } - break; -@@ -909,11 +930,21 @@ static void print_ipv6(FILE *f, const struct tc_u32_key *key) - int bits = mask2bits(key->mask); - - if (bits >= 0) { -- fprintf(f, "\n %s %s/%d", -- key->off == 12 ? "match IP src" : "match IP dst", -- inet_ntop(AF_INET, &key->val, -- abuf, sizeof(abuf)), -- bits); -+ const char *addr; -+ -+ if (key->off == 12) { -+ print_nl(); -+ print_null(PRINT_FP, NULL, " match IP src ", NULL); -+ open_json_object("src"); -+ } else { -+ print_nl(); -+ print_null(PRINT_FP, NULL, " match IP dst ", NULL); -+ open_json_object("dst"); -+ } -+ addr = inet_ntop(AF_INET, &key->val, abuf, sizeof(abuf)); -+ print_string(PRINT_ANY, "address", "%s", addr); -+ print_int(PRINT_ANY, "prefixlen", "/%d", bits); -+ close_json_object(); - return; - } - } -@@ -922,31 +953,37 @@ static void print_ipv6(FILE *f, const struct tc_u32_key *key) - case 20: - switch (ntohl(key->mask)) { - case 0x0000ffff: -- fprintf(f, "\n match sport %u", -- ntohl(key->val) & 0xffff); -+ print_nl(); -+ print_uint(PRINT_ANY, "sport", " match sport %u", -+ ntohl(key->val) & 0xffff); - return; - case 0xffff0000: -- fprintf(f, "\n match dport %u", -- ntohl(key->val) >> 16); -+ print_uint(PRINT_ANY, "dport", "match dport %u", -+ ntohl(key->val) >> 16); - return; - case 0xffffffff: -- fprintf(f, "\n match sport %u, match dport %u", -- ntohl(key->val) & 0xffff, -- ntohl(key->val) >> 16); -+ print_nl(); -+ print_uint(PRINT_ANY, "sport", " match sport %u, ", -+ ntohl(key->val) & 0xffff); -+ print_uint(PRINT_ANY, "dport", "match dport %u", -+ ntohl(key->val) >> 16); - - return; - } - /* XXX: Default print_raw */ - } -+ close_json_object(); - } - - static void print_raw(FILE *f, const struct tc_u32_key *key) - { -- fprintf(f, "\n match %08x/%08x at %s%d", -- (unsigned int)ntohl(key->val), -- (unsigned int)ntohl(key->mask), -- key->offmask ? "nexthdr+" : "", -- key->off); -+ open_json_object("match"); -+ print_nl(); -+ print_hex(PRINT_ANY, "value", " match %08x", (unsigned int)ntohl(key->val)); -+ print_hex(PRINT_ANY, "mask", "/%08x ", (unsigned int)ntohl(key->mask)); -+ print_string(PRINT_ANY, "offmask", "at %s", key->offmask ? "nexthdr+" : ""); -+ print_int(PRINT_ANY, "off", "%d", key->off); -+ close_json_object(); - } - - static const struct { --- -2.34.1 - diff --git a/SOURCES/0014-Update-kernel-headers-and-import-virtio_net.patch b/SOURCES/0014-Update-kernel-headers-and-import-virtio_net.patch deleted file mode 100644 index 5789d0a..0000000 --- a/SOURCES/0014-Update-kernel-headers-and-import-virtio_net.patch +++ /dev/null @@ -1,397 +0,0 @@ -From e62789f726b0d7fb1f3102e7cb26f2a59fd74231 Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 15:01:57 +0100 -Subject: [PATCH] Update kernel headers and import virtio_net - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2056827 -Upstream Status: iproute2.git commit 5cb7ec0c -Conflicts: cherry-picked virtio_net header update, exclude unrelated bpf - and mptcp parts. - -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/0015-uapi-update-vdpa.h.patch b/SOURCES/0015-uapi-update-vdpa.h.patch deleted file mode 100644 index 26cb730..0000000 --- a/SOURCES/0015-uapi-update-vdpa.h.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 28786edf9fd1e0d188190cb7029ddde2bdcd8ad8 Mon Sep 17 00:00:00 2001 -Message-Id: <28786edf9fd1e0d188190cb7029ddde2bdcd8ad8.1647872200.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 15:03:16 +0100 -Subject: [PATCH] uapi: update vdpa.h - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2056827 -Upstream Status: iproute2.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/0016-vdpa-Remove-unsupported-command-line-option.patch b/SOURCES/0016-vdpa-Remove-unsupported-command-line-option.patch deleted file mode 100644 index ddc6e0a..0000000 --- a/SOURCES/0016-vdpa-Remove-unsupported-command-line-option.patch +++ /dev/null @@ -1,46 +0,0 @@ -From a2ffc58207b80608f57299a297704d1e409829a5 Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 15:03:16 +0100 -Subject: [PATCH] vdpa: Remove unsupported command line option - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2056827 -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/0017-vdpa-Allow-for-printing-negotiated-features-of-a-dev.patch b/SOURCES/0017-vdpa-Allow-for-printing-negotiated-features-of-a-dev.patch deleted file mode 100644 index a90e926..0000000 --- a/SOURCES/0017-vdpa-Allow-for-printing-negotiated-features-of-a-dev.patch +++ /dev/null @@ -1,224 +0,0 @@ -From fab19f1e5fe9ccf1d180874d5b0d86c99c7e16cb Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 15:03:16 +0100 -Subject: [PATCH] vdpa: Allow for printing negotiated features of a device - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2056827 -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/0018-vdpa-Support-for-configuring-max-VQ-pairs-for-a-devi.patch b/SOURCES/0018-vdpa-Support-for-configuring-max-VQ-pairs-for-a-devi.patch deleted file mode 100644 index 7b0e53e..0000000 --- a/SOURCES/0018-vdpa-Support-for-configuring-max-VQ-pairs-for-a-devi.patch +++ /dev/null @@ -1,127 +0,0 @@ -From b49cd0103978e0e05ca5be4d7369ab62622ff42f Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 15:03:16 +0100 -Subject: [PATCH] vdpa: Support for configuring max VQ pairs for a device - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2056827 -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/0019-vdpa-Support-reading-device-features.patch b/SOURCES/0019-vdpa-Support-reading-device-features.patch deleted file mode 100644 index db85855..0000000 --- a/SOURCES/0019-vdpa-Support-reading-device-features.patch +++ /dev/null @@ -1,99 +0,0 @@ -From c98dd268d17c4faa19dac141f69597096bf0dfa4 Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 15:03:16 +0100 -Subject: [PATCH] vdpa: Support reading device features - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2056827 -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/0020-vdpa-Update-man-page-with-added-support-to-configure.patch b/SOURCES/0020-vdpa-Update-man-page-with-added-support-to-configure.patch deleted file mode 100644 index 9e6dfa0..0000000 --- a/SOURCES/0020-vdpa-Update-man-page-with-added-support-to-configure.patch +++ /dev/null @@ -1,54 +0,0 @@ -From b72f22efc837d0c3e917186a4179158c35e9e690 Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 21 Mar 2022 15:03: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=2056827 -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/SOURCES/0021-tc-flower-Fix-buffer-overflow-on-large-labels.patch b/SOURCES/0021-tc-flower-Fix-buffer-overflow-on-large-labels.patch deleted file mode 100644 index c51aec4..0000000 --- a/SOURCES/0021-tc-flower-Fix-buffer-overflow-on-large-labels.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 1b3f8332696651e4843b0419425480f134c8347f Mon Sep 17 00:00:00 2001 -Message-Id: <1b3f8332696651e4843b0419425480f134c8347f.1657569892.git.aclaudi@redhat.com> -In-Reply-To: -References: -From: Andrea Claudi -Date: Mon, 11 Jul 2022 17:57:52 +0200 -Subject: [PATCH] tc: flower: Fix buffer overflow on large labels - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2099364 -Upstream Status: unknown commit 73590d95 - -commit 73590d9573148804034a88ceb2f6b7ca1545561f -Author: Paul Blakey -Date: Sun Dec 5 15:20:25 2021 +0200 - - tc: flower: Fix buffer overflow on large labels - - Buffer is 64bytes, but label printing can take 66bytes printing - in hex, and will overflow when setting the string delimiter ('\0'). - - Fix that by increasing the print buffer size. - - Example of overflowing ct_label: - ct_label 11111111111111111111111111111111/11111111111111111111111111111111 - - Fixes: 2fffb1c03056 ("tc: flower: Add matching on conntrack info") - Signed-off-by: Paul Blakey - Signed-off-by: Stephen Hemminger ---- - tc/f_flower.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tc/f_flower.c b/tc/f_flower.c -index 7f78195f..6d70b92a 100644 ---- a/tc/f_flower.c -+++ b/tc/f_flower.c -@@ -2195,7 +2195,7 @@ static void flower_print_ct_label(struct rtattr *attr, - const unsigned char *str; - bool print_mask = false; - int data_len, i; -- SPRINT_BUF(out); -+ char out[128]; - char *p; - - if (!attr) --- -2.36.1 - diff --git a/SPECS/iproute.spec b/SPECS/iproute.spec index 3fe36ce..a4813df 100644 --- a/SPECS/iproute.spec +++ b/SPECS/iproute.spec @@ -1,34 +1,13 @@ Summary: Advanced IP routing and network device configuration tools Name: iproute -Version: 5.15.0 -Release: 4%{?dist}.1%{?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-vdpa-align-uapi-headers.patch -Patch8: 0009-vdpa-Enable-user-to-query-vdpa-device-config-layout.patch -Patch9: 0010-vdpa-Enable-user-to-set-mac-address-of-vdpa-device.patch -Patch10: 0011-vdpa-Enable-user-to-set-mtu-of-the-vdpa-device.patch -Patch11: 0012-tc-u32-add-support-for-json-output.patch -Patch12: 0013-tc-u32-add-json-support-in-print_raw-print_ipv4-prin.patch -Patch13: 0014-Update-kernel-headers-and-import-virtio_net.patch -Patch14: 0015-uapi-update-vdpa.h.patch -Patch15: 0016-vdpa-Remove-unsupported-command-line-option.patch -Patch16: 0017-vdpa-Allow-for-printing-negotiated-features-of-a-dev.patch -Patch17: 0018-vdpa-Support-for-configuring-max-VQ-pairs-for-a-devi.patch -Patch18: 0019-vdpa-Support-reading-device-features.patch -Patch19: 0020-vdpa-Update-man-page-with-added-support-to-configure.patch -Patch20: 0021-tc-flower-Fix-buffer-overflow-on-large-labels.patch License: GPLv2+ and Public Domain BuildRequires: bison @@ -134,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 @@ -160,8 +140,8 @@ cat %{SOURCE1} >>%{buildroot}%{_sysconfdir}/iproute2/rt_dsfield %{_includedir}/iproute2/bpf_elf.h %changelog -* Mon Jul 11 2022 Andrea Claudi - 5.15.0-4.el8_6.1 -- tc: flower: Fix buffer overflow on large labels (Andrea Claudi) [2099364] +* Wed Jun 08 2022 Wen Liang - 5.18.0-1.el8 +- New version 5.18.0 [2074607] * Mon Mar 21 2022 Andrea Claudi - 5.15.0-4.el8 - vdpa: Update man page with added support to configure max vq pair (Andrea Claudi) [2056827]