From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (mail.openvz.org [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id 5573B8045D for ; Fri, 23 Oct 2026 19:22:48 +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 69NJLUKp027703; Fri, 23 Oct 2026 22:21:31 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69NJLUKp027703 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="XQN2mTUW" Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69NJLO0S027690 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Fri, 23 Oct 2026 22:21:24 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69NJLO0S027690 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-48dfaaea30cso784877f8f.0 for ; Fri, 23 Oct 2026 12:21:24 -0700 (PDT) X-Gm-Message-State: AFq9FYI78MCeisRCqhYlKlqzJOvxEz+DE7kjGT4lTcgtA1BMqtg1i8tu qwQ2OQgj7WJWJPwlza66nymcEvRlskjYSFBMdxN29NSTdB1PGP5F5rCirICTkwTaPnWsb9gSaqM cTYldGC6u3dct/EtZhrZ8LzvSZIu+9X3NVZA5739DivPagquImHf7Ng== X-Gm-Gg: AYBFou2fL5yabt6mgP0BUG5AcOlVfrrEvUH9HGQKjV6B/9koPrD3slhph6UG+1B0OHC x8V8nFI1nYa4VtIJHUZs5qmCfhTdYuDc/RsSpYlqXbNPH/buzDED1YdAjEPeajOd3Z8DtL2maOR YwMeVUPePfQiYpZFLFtTLc5CibQ23XSweEBR1rOkzWQJlltev6JZwLH4lKh++UuhTAjpVmWI/my DRNHJWCvLxmJqSRk+yKRLT9Pi2GSkx/a6yu02nEh/X7+lp8cBcs2nYLK3twTu17v0pU5drdcQlO k/8Z0CqyDAVwwL7g4NZYtlGDF3faqZpNTk5aRKsJvdVCe0BG93THAXPG1bkN8iXa66YT78QgGlY JIXkygq/qJH3WZhlmMoFUV6gtQg== X-Received: by 2002:a05:6000:4028:b0:48b:a4b:5a2c with SMTP id ffacd0b85a97d-48e3eb3cc9cmr25096f8f.3.1792783284251; Fri, 23 Oct 2026 12:21:24 -0700 (PDT) X-Received: by 2002:a05:6000:4028:b0:48b:a4b:5a2c with SMTP id ffacd0b85a97d-48e3eb3cc9cmr25051f8f.3.1792783283672; Fri, 23 Oct 2026 12:21:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1792783283; cv=none; d=google.com; s=arc-20260327; b=LhYbHw2+75Y72hwiCIqXm4hN31yFxC/qAzxeJazmVRyYEgmX/I+cgRC1Y9R4Di6Njo xnUQUK2TwkMZtggKaY+z1qe0bcTUv7mLV8UVI3Be6YnYVFMN+ijgJ5mjE5CBDSuq22oB aqN+AmvyHj5l9WRKpEHUOCyL+/wpw3O2TpOI8N8pEV3W6sWMTm7q11Z4pBMNpEAaT0+I l8NYcJl6G8v8HywgMzBHKnfu3B51FPAJtYLZp8iLER4HTYd4KChg8o8YogvK8sjcJ3Bi YWdSU5G6TIy8qjr19xCEg0P9SF8PFge9h2gHobyezb+JPWyGlMeprAA1io7k9B4ARQde WK5A== 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=GgAf5YF0Avo2TQlk3B62M7eyQlBXhlWeh5qJSC4ilhM=; fh=WpT6aB7RBAGHZeWZzqAr71yzRFbPTYkPWKsRagLn48Q=; b=jBhI7Blt7ivkxSn1zpOO4lb9PMldx6GYsK8kzu9xYuTtvCOl8Kj2V+Erd66ZU+mYGw 6v6+E0QWo7rh/kISdFfRBUO2GCDfGA50PNVt9XorZBYOrQIom5fE8YD2k/NwwAMz/LMw tnZUWVjdttI6+THGMzJY7h0Cm4HgV5lLXr3Zs4o10IDTxQD7i0fhJrzXLeL4AnLjt0Ph woEEL6rYG5dOk/dYpJ1pl3W4hSxUQqDmSQ1RN+w59lb17GXcjXt7vQUPentztnuH0k/r KoYq92lpTCdGX1XqjhcSpYJwxOxvHbg0v1JDVMalm7vhLpUIRHSb7EKxODY82HGwrV4T M1mQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=XQN2mTUW; 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-48e3d41b639si1230380f8f.63.2026.10.23.12.21.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Oct 2026 12:21:23 -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=XQN2mTUW; 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=GgAf5YF0Avo2TQlk3B62M7eyQlBXhlWeh5qJSC4ilhM=; b=XQN2mTUWyvgj 7OL095XsBTo80ZtJ/InRxIHlzHf9UI6Fk966OJEgc+EY7fevJvU6zlrLytUckxJUYi4FgQ352LVCL M9ByhttD0ZIXtGg53zG8oLg+Apmoi5XRtsCb8NEn73UMhRQpJMj0j2SAuLz/3nrgDiB+n17yDbND9 W6Sw0MnMKgGEAc7ROmT5d7m1XSXrjL6wMNKfPkCE073uQ8KqiNRBNhAhHzJW1ZNEafSx1VmJBgn8a t2xs6C32+Qzr8/3YEqIQCgaQ3xBDpc6qnW605pINpayKjeCMEGY6E1IanHHIjD6VWwa6Iboz0ZTGz hc3TLAypVshOX+Er8e0Fng==; 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 1xKKlk-00EmPm-18; Fri, 23 Oct 2026 21:21:19 +0200 From: Eva Kurchatova To: khorenko@virtuozzo.com Date: Fri, 23 Oct 2026 22:20:10 +0300 Message-ID: <20261023192121.356062-2-eva.kurchatova@virtuozzo.com> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261023192121.356062-1-eva.kurchatova@virtuozzo.com> References: <20261023192121.356062-1-eva.kurchatova@virtuozzo.com> MIME-Version: 1.0 X-OZ-Fwd: true Cc: devel@openvz.org Subject: [Devel] [PATCH hci-8.1 v5 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 | 38 +++++++++++++++++++ 7 files changed, 64 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..b65d474ac7b2 --- /dev/null +++ b/tools/testing/selftests/drivers/net/hw/skip_on_veth.sh @@ -0,0 +1,38 @@ +#!/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 + +# 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 command line, then forwarding.config, then the driver + local p1=${1:-${NETIFS[p1]-}} + local kind + + # lib.sh skips by itself when the driver has no interfaces + [[ -z $p1 && -n $NETIF_FIND_DRIVER ]] && return + p1=${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 0 + 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