From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (unknown [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id 31E388017D for ; Wed, 7 Oct 2026 14:52:11 +0000 (UTC) Received: from mail.openvz.org (localhost [127.0.0.1]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 697Eooaw007601; Wed, 7 Oct 2026 17:50:50 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 697Eooaw007601 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="TbPYn6Ay" Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 697Eom4H007592 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Wed, 7 Oct 2026 17:50:48 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 697Eom4H007592 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-48c54e690c5so3380021f8f.0 for ; Wed, 07 Oct 2026 07:50:48 -0700 (PDT) X-Gm-Message-State: AFq9FYJi56mcdv8Qlgj9MqexkOGR6rR2ieU/1tabl4HoIEeGuT5WVg5H TEcPaWmWa/xLLhXHJiI8/SItWwQ4v8d9vnlafyxhIADqE5QXNmGRn6JU8f2segckoRjstBtHaLR 77xGasHKjjRSUQTGRfkiI9STR3lp15gc7p355tBaeoZsxRBOMfPfDiQ== X-Gm-Gg: AYBFou1h7uz1Hlfqd/BJ3r9Hq1zwCeWISeN0C7melDdgk71LAEJeqS5cgmYxk4uvgzz m24s4OhLyJBYuh2eodauX/m6GCjglQNi6RwMfZsdRULE9rG+sLzQxCM6XaEtuOvJ6rKnTzFD5JT JHaYr5hI/xaMhRmL/TTlMqRCKVQecV9Cj1/unq5/xPfIAsDwI2Yg2PaFhRll/PFWdTwyoC1YfC0 S+6jflAlVEJWTVoDT6VU4m+GDLKvLJOt5NQN5TQPRbmE+O4ACuKPM8zRtvWXhSmLTWapX7cqsUJ rGIUcYxhq8azRu15gQaLTp5gM3+B3qBmKWaS4AWlreDRODU9kym2W6NYc2hH8lb5XR9b8WvjPOO lVdj8askYdE0FbirPRgCrZCBF X-Received: by 2002:a05:6000:3c5:b0:48c:71b8:c633 with SMTP id ffacd0b85a97d-48c7288ce5cmr4617293f8f.43.1791384647764; Wed, 07 Oct 2026 07:50:47 -0700 (PDT) X-Received: by 2002:a05:6000:3c5:b0:48c:71b8:c633 with SMTP id ffacd0b85a97d-48c7288ce5cmr4617243f8f.43.1791384647112; Wed, 07 Oct 2026 07:50:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1791384647; cv=none; d=google.com; s=arc-20260327; b=ifIO55xYdZt4B1BYIuvEL3fRhmQKottejlHrC8eodqcMV4JABfbYn80XRzeiiYVerd P2w9pYdiHVwWSuMNCOMuzFbcCMAX7wUqBhyM5LWGFWZHnOCsmV5lsePAU8JVoEJzOjTb MPP45+aK7Y+gdLxcxolS/0CS1DtyVMiJaAmeJBkw3oVlFbq4mYAfxqmOCB63MUD0Wslp gmoM52SndtjTCY6IVbtk6BbMRMvcaEeNa6wvs7F6GUS7KDV8t7JRtuAs+AY5n46pfSLW ZcTUWt+ipETtXSJILBuF8iMJa9X51vJZbMqD7qZyUAZDc1pYtQ0UCdkl5iX/K+X2N0vK BBTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=Cn8vNXMLdhYw6mKcth62UBQRd7xY04LiFP25Uwvo3kI=; fh=WpT6aB7RBAGHZeWZzqAr71yzRFbPTYkPWKsRagLn48Q=; b=T9SULJk+1+s0cktaL8FOtRBkKjnThSdF+KpORpsukicbWAqbquNwYDSYjIoasJKhdA LQGt3NlCDYOwbc7OABdwZfRg//tDWfobd03H6enSDpxLpcoEEhCgtW07jfzAJv9fTh7k N3Sq4pnaRv8zPpx6V3AdZJRXnf1HSSUcVbAxmPDTK87xm42/13z6gnVbUFT7U5/tDGFB HewRlzoxiNHLxu5/OmrTVlIvhKIOS7WjUTvOIwyGMdNrq4YNKAFpL9hPZQJiHHqQ/xGG RvUJh9iikxnIW7fToJ+hxTMd9J+lT/UrMl7od7+sU9OFjnibc6wTnC9mIMkvXSnbtmlp JL0A==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=TbPYn6Ay; spf=pass (google.com: domain of eva.kurchatova@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=eva.kurchatova@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from relay.virtuozzo.com (relay.virtuozzo.com. [130.117.225.111]) by mx.google.com with ESMTPS id ffacd0b85a97d-48c724b520fsi5184353f8f.434.2026.10.07.07.50.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Oct 2026 07:50:47 -0700 (PDT) Received-SPF: pass (google.com: domain of eva.kurchatova@virtuozzo.com designates 130.117.225.111 as permitted sender) client-ip=130.117.225.111; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=TbPYn6Ay; spf=pass (google.com: domain of eva.kurchatova@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=eva.kurchatova@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=Cn8vNXMLdhYw6mKcth62UBQRd7xY04LiFP25Uwvo3kI=; b=TbPYn6Ay3Tw+ m718PR64Bg9eYGs4YYuyF3tTHvwC6mrOU1ce71MlqVxj6ktZjVdmDAK/rE6bGR3Kdb21HmRh40CEH a6RDSQCe4tLfGaDDQJaklQCAd9ysuanglDN/c9Ce0EKjbOmMRKF39J2UVdqKEkBWJw/PPmE05TH5y zhdwPlDUdJiOeaOQR0z+atv3MID9M7ZYPAs+pKmwOO8lPE3YaepidXvTKwJ33qY8KiWtgobM5iaf4 kQKRHJPM0sQgyhw8L3GJZZjXA4+TPTD+s+Lz8pOzqWImnkstHIKmcR6WVEesQ0Uwqyv1nDNZpk9zu RIVAmZyUnt+CNuMejXYsPA==; Received: from ch-vpn.virtuozzo.com ([130.117.225.6] helo=LekKit-T14) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1xESvU-0066uv-1E; Wed, 07 Oct 2026 16:50:46 +0200 From: Eva Kurchatova To: khorenko@virtuozzo.com Date: Wed, 7 Oct 2026 17:50:20 +0300 Message-ID: <20261007145044.2647274-2-eva.kurchatova@virtuozzo.com> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261007145044.2647274-1-eva.kurchatova@virtuozzo.com> References: <20261007145044.2647274-1-eva.kurchatova@virtuozzo.com> MIME-Version: 1.0 X-OZ-Fwd: true Cc: devel@openvz.org Subject: [Devel] [PATCH hci-8.1 v4 1/1] selftests: drv-net-hw: skip the tests that need a real interface X-BeenThere: devel@openvz.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: OpenVZ development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: devel-bounces@openvz.org Errors-To: devel-bounces@openvz.org ethtool, ethtool_extended_state, ethtool_rmon, hw_stats_l3 and hw_stats_l3_gre need hardware: link speed, extended link state, rmon counters, L3 statistics offload. With no interfaces configured lib.sh substitutes a veth pair, and every case fails on what veth does not have. Upstream runs these tests on real hardware only and dropped the veth check in commit 0c499a351777 ("selftests: forwarding: Ditch skip_on_veth()"), so this patch is not for upstream. Skip when the first interface the test would use is a veth, or does not exist and lib.sh would create one. Real interfaces, named in forwarding.config or on the command line, run as before, and so does a run that picks its interfaces by driver with NETIF_FIND_DRIVER. The check runs before lib.sh is sourced, since lib.sh creates the pair as it is sourced and would leave it behind. https://virtuozzo.atlassian.net/browse/VSTOR-139651 Feature: fix selftests Signed-off-by: Eva Kurchatova --- .../testing/selftests/drivers/net/hw/Makefile | 1 + .../selftests/drivers/net/hw/ethtool.sh | 5 +++ .../drivers/net/hw/ethtool_extended_state.sh | 5 +++ .../selftests/drivers/net/hw/ethtool_rmon.sh | 5 +++ .../selftests/drivers/net/hw/hw_stats_l3.sh | 5 +++ .../drivers/net/hw/hw_stats_l3_gre.sh | 5 +++ .../selftests/drivers/net/hw/skip_on_veth.sh | 42 +++++++++++++++++++ 7 files changed, 68 insertions(+) create mode 100644 tools/testing/selftests/drivers/net/hw/skip_on_veth.sh diff --git a/tools/testing/selftests/drivers/net/hw/Makefile b/tools/testing/selftests/drivers/net/hw/Makefile index e556b5150a51..39aece5e2776 100644 --- a/tools/testing/selftests/drivers/net/hw/Makefile +++ b/tools/testing/selftests/drivers/net/hw/Makefile @@ -19,6 +19,7 @@ TEST_PROGS = \ TEST_FILES := \ ethtool_lib.sh \ + skip_on_veth.sh \ # TEST_INCLUDES := \ diff --git a/tools/testing/selftests/drivers/net/hw/ethtool.sh b/tools/testing/selftests/drivers/net/hw/ethtool.sh index fa6953de6b6d..e1fbe37a71fc 100755 --- a/tools/testing/selftests/drivers/net/hw/ethtool.sh +++ b/tools/testing/selftests/drivers/net/hw/ethtool.sh @@ -11,6 +11,11 @@ ALL_TESTS=" " NUM_NETIFS=2 lib_dir=$(dirname "$0") + +# Needs a device that can set link speed and autonegotiation +source "$lib_dir"/skip_on_veth.sh +skip_on_veth "$@" + source "$lib_dir"/../../../net/forwarding/lib.sh source ethtool_lib.sh diff --git a/tools/testing/selftests/drivers/net/hw/ethtool_extended_state.sh b/tools/testing/selftests/drivers/net/hw/ethtool_extended_state.sh index a7584448416e..1201130cae67 100755 --- a/tools/testing/selftests/drivers/net/hw/ethtool_extended_state.sh +++ b/tools/testing/selftests/drivers/net/hw/ethtool_extended_state.sh @@ -9,6 +9,11 @@ ALL_TESTS=" NUM_NETIFS=2 lib_dir=$(dirname "$0") + +# Needs a device that reports an extended link state +source "$lib_dir"/skip_on_veth.sh +skip_on_veth "$@" + source "$lib_dir"/../../../net/forwarding/lib.sh source ethtool_lib.sh diff --git a/tools/testing/selftests/drivers/net/hw/ethtool_rmon.sh b/tools/testing/selftests/drivers/net/hw/ethtool_rmon.sh index 8f60c1685ad4..1745afe671d4 100755 --- a/tools/testing/selftests/drivers/net/hw/ethtool_rmon.sh +++ b/tools/testing/selftests/drivers/net/hw/ethtool_rmon.sh @@ -8,6 +8,11 @@ ALL_TESTS=" NUM_NETIFS=2 lib_dir=$(dirname "$0") + +# Needs a device with rmon histogram counters +source "$lib_dir"/skip_on_veth.sh +skip_on_veth "$@" + source "$lib_dir"/../../../net/forwarding/lib.sh ETH_FCS_LEN=4 diff --git a/tools/testing/selftests/drivers/net/hw/hw_stats_l3.sh b/tools/testing/selftests/drivers/net/hw/hw_stats_l3.sh index 67fafefc80be..460633f27f40 100755 --- a/tools/testing/selftests/drivers/net/hw/hw_stats_l3.sh +++ b/tools/testing/selftests/drivers/net/hw/hw_stats_l3.sh @@ -49,6 +49,11 @@ ALL_TESTS=" " NUM_NETIFS=4 lib_dir=$(dirname "$0") + +# Needs a device that offloads L3 statistics +source "$lib_dir"/skip_on_veth.sh +skip_on_veth "$@" + source "$lib_dir"/../../../net/forwarding/lib.sh source "$lib_dir"/../../../net/forwarding/tc_common.sh diff --git a/tools/testing/selftests/drivers/net/hw/hw_stats_l3_gre.sh b/tools/testing/selftests/drivers/net/hw/hw_stats_l3_gre.sh index a94d92e1abce..abe8c09700b4 100755 --- a/tools/testing/selftests/drivers/net/hw/hw_stats_l3_gre.sh +++ b/tools/testing/selftests/drivers/net/hw/hw_stats_l3_gre.sh @@ -13,6 +13,11 @@ ALL_TESTS=" " NUM_NETIFS=6 lib_dir=$(dirname "$0") + +# Needs a device that offloads L3 statistics +source "$lib_dir"/skip_on_veth.sh +skip_on_veth "$@" + source "$lib_dir"/../../../net/forwarding/lib.sh source "$lib_dir"/../../../net/forwarding/ipip_lib.sh source "$lib_dir"/../../../net/forwarding/tc_common.sh diff --git a/tools/testing/selftests/drivers/net/hw/skip_on_veth.sh b/tools/testing/selftests/drivers/net/hw/skip_on_veth.sh new file mode 100644 index 000000000000..64f9c217d0fe --- /dev/null +++ b/tools/testing/selftests/drivers/net/hw/skip_on_veth.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +# Source with lib_dir set, ahead of lib.sh, which creates the interfaces. + +forwarding_dir="$lib_dir"/../../../net/forwarding + +# lib.sh reads NETIF_FIND_DRIVER before forwarding.config: the environment only +find_driver=${NETIF_FIND_DRIVER-} + +# forwarding.config assigns by name into the array lib.sh declares +declare -A NETIFS + +if [[ -f $forwarding_dir/forwarding.config ]]; then + source "$forwarding_dir/forwarding.config" +fi + +: "${NETIF_CREATE:=yes}" +: "${NETIF_TYPE:=veth}" + +# Call before sourcing lib.sh, exiting after it leaves the veth pair behind. +# Judges by the first interface, the one lib.sh creates the pair from, +# found the way lib.sh finds it: keep in step with lib.sh. +skip_on_veth() +{ + # lib.sh takes the interfaces from the command line ahead of anything + local p1=${1:-} + local kind + + # Otherwise with NETIF_FIND_DRIVER it takes those of that driver, and + # skips by itself when it finds none + [[ -z $p1 && -n $find_driver ]] && return + p1=${p1:-${NETIFS[p1]-veth0}} + if ip link show dev "$p1" &> /dev/null; then + kind=$(ip -j -d link show dev "$p1" | jq -r '.[].linkinfo.info_kind') + elif [[ $NETIF_CREATE == yes && $NETIF_TYPE == veth ]]; then + kind=veth # what lib.sh creates when the interface is missing + fi + [[ $kind == veth ]] || return + echo "SKIP: needs a real interface, set NETIFS in forwarding.config" + exit 4 # ksft_skip, lib.sh is not sourced yet +} -- 2.56.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel