From: Paul Greenwalt <paul.greenwalt@intel.com>
To: intel-wired-lan@lists.osuosl.org
Cc: netdev@vger.kernel.org, Paul Greenwalt <paul.greenwalt@intel.com>,
Przemek Kitszel <przemyslaw.kitszel@intel.com>,
Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Subject: [PATCH iwl-next 3/3] selftests: net: hw: add devlink info test
Date: Fri, 14 Aug 2026 13:49:19 -0400 [thread overview]
Message-ID: <20260814174919.4177289-4-paul.greenwalt@intel.com> (raw)
In-Reply-To: <20260814174919.4177289-1-paul.greenwalt@intel.com>
Add a selftest that verifies drivers properly report device information
through the devlink info interface. This test validates:
- devlink dev info command succeeds
- driver name is reported and matches ethtool output
- at least one version or serial_number is reported
The output format matches what NIPA CI uses for device regression
tracking, helping maintainers identify pass/fail status changes due
to FW updates.
Example usage:
sudo NETIF=eth0 ./tools/testing/selftests/drivers/net/hw/devlink_info.sh
INFO: driver: idpf
INFO: serial_number: 00-a0-c9-ff-ff-23-45-67
TEST: devlink info [ OK ]
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Link: https://github.com/linux-netdev/nipa/wiki/Netdev-CI-system#device-information
Signed-off-by: Paul Greenwalt <paul.greenwalt@intel.com>
---
.../testing/selftests/drivers/net/hw/Makefile | 1 +
.../selftests/drivers/net/hw/devlink_info.sh | 119 ++++++++++++++++++
2 files changed, 120 insertions(+)
create mode 100755 tools/testing/selftests/drivers/net/hw/devlink_info.sh
diff --git a/tools/testing/selftests/drivers/net/hw/Makefile b/tools/testing/selftests/drivers/net/hw/Makefile
index 78bb0169350b..edd353f27a39 100644
--- a/tools/testing/selftests/drivers/net/hw/Makefile
+++ b/tools/testing/selftests/drivers/net/hw/Makefile
@@ -19,6 +19,7 @@ TEST_GEN_FILES := \
TEST_PROGS = \
csum.py \
+ devlink_info.sh \
devlink_rate_cross_esw.py \
devlink_rate_tc_bw.py \
devmem.py \
diff --git a/tools/testing/selftests/drivers/net/hw/devlink_info.sh b/tools/testing/selftests/drivers/net/hw/devlink_info.sh
new file mode 100755
index 000000000000..b2ee880590c4
--- /dev/null
+++ b/tools/testing/selftests/drivers/net/hw/devlink_info.sh
@@ -0,0 +1,119 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
+#
+# Test devlink info support
+#
+# This test verifies that the driver properly reports device information
+# through the devlink info interface. The output format matches what
+# NIPA CI uses for regression tracking (see Device information section
+# at https://github.com/linux-netdev/nipa/wiki/Netdev-CI-system).
+#
+# Validates:
+# - devlink dev info command succeeds
+# - driver name is reported and matches ethtool
+# - at least one version or serial_number is reported
+# - serial_number is logged if present
+#
+# Usage:
+# NETIF=eth0 ./devlink_info.sh
+
+lib_dir=$(dirname "$0")/../../../net
+
+ALL_TESTS="devlink_info_test"
+source "$lib_dir"/lib.sh
+
+require_command devlink
+require_command jq
+require_command ethtool
+
+DL_HANDLE=""
+
+setup_prepare()
+{
+ # Try to get devlink handle from devlink port first
+ DL_HANDLE=$(devlink -j port show 2>/dev/null |
+ jq -r --arg netif "$NETIF" \
+ '.port | to_entries[] |
+ select(.value.netdev == $netif) | .key' 2>/dev/null |
+ cut -d/ -f1-2)
+
+ # Fallback: get PCI address from ethtool and check if devlink device exists
+ if [ -z "$DL_HANDLE" ]; then
+ local bus_info
+ bus_info=$(ethtool -i "$NETIF" 2>/dev/null | awk '/^bus-info:/ {print $2}')
+ if [ -n "$bus_info" ]; then
+ DL_HANDLE="pci/$bus_info"
+ # Verify this devlink device exists
+ if ! devlink dev show "$DL_HANDLE" &>/dev/null; then
+ DL_HANDLE=""
+ fi
+ fi
+ fi
+
+ if [ -z "$DL_HANDLE" ]; then
+ echo "SKIP: Could not find devlink handle for $NETIF"
+ exit $ksft_skip
+ fi
+}
+
+info_get()
+{
+ local name
+
+ name=$1
+ cmd_jq "devlink dev info $DL_HANDLE -j" ".[][][\"$name\"]" "-e"
+}
+
+has_any_version()
+{
+ local info
+ info=$(devlink -j dev info $DL_HANDLE)
+
+ # Check if any version category exists and has at least one entry
+ echo "$info" | jq -e '.[][].versions | length > 0' > /dev/null 2>&1
+}
+
+devlink_info_test()
+{
+ RET=0
+
+ # Test devlink info command succeeds
+ devlink dev info $DL_HANDLE > /dev/null
+ check_err $? "devlink dev info failed for $DL_HANDLE"
+
+ # Test driver name is reported
+ local driver
+ driver=$(info_get "driver")
+ check_err $? "Failed to get driver name"
+
+ # Verify driver matches ethtool output
+ local expected_driver
+ expected_driver=$(ethtool -i "$NETIF" | awk '/^driver:/ {print $2}')
+ check_err $? "Failed to get driver from ethtool"
+ if [ -z "$expected_driver" ]; then
+ check_err 1 "Failed to get driver from ethtool"
+ fi
+ if [ "$driver" != "$expected_driver" ]; then
+ check_err 1 "Driver mismatch: devlink='$driver' ethtool='$expected_driver'"
+ else
+ log_info "driver: $driver"
+ fi
+
+ # Test at least one version OR serial_number is reported (needed for device tracking)
+ local serial
+ serial=$(info_get "serial_number" 2>/dev/null)
+ if [ -n "$serial" ]; then
+ log_info "serial_number: $serial"
+ fi
+
+ if ! has_any_version && [ -z "$serial" ]; then
+ check_err 1 "No versions or serial_number reported"
+ fi
+
+ log_test "devlink info"
+}
+
+setup_prepare
+tests_run
+
+exit $EXIT_STATUS
--
2.52.0
prev parent reply other threads:[~2026-08-15 1:26 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-14 17:49 [PATCH iwl-next 0/3] idpf: add devlink info support with selftest Paul Greenwalt
2026-08-14 17:49 ` [PATCH iwl-next 1/3] idpf: clear drvdata on probe error path Paul Greenwalt
2026-08-14 17:49 ` [PATCH iwl-next 2/3] idpf: add devlink info support Paul Greenwalt
2026-08-14 17:49 ` Paul Greenwalt [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260814174919.4177289-4-paul.greenwalt@intel.com \
--to=paul.greenwalt@intel.com \
--cc=aleksandr.loktionov@intel.com \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=netdev@vger.kernel.org \
--cc=przemyslaw.kitszel@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox