[PATCH net-next v4 08/10] selftests: drivers: hw: move to KTAP output

From: Ioana Ciornei

Date: Thu Mar 26 2026 - 09:37:27 EST


Update the ethtool_rmon.sh test so that it uses the KTAP format for its
output. This is achieved by using the helpers found in ktap_helpers.sh.
An example output can be found below.

$ ./ethtool_rmon.sh endpmac3 endpmac4
TAP version 13
1..14
ok 1 ethtool_rmon.rx-pkts64to64
ok 2 ethtool_rmon.rx-pkts65to127
ok 3 ethtool_rmon.rx-pkts128to255
ok 4 ethtool_rmon.rx-pkts256to511
ok 5 ethtool_rmon.rx-pkts512to1023
ok 6 ethtool_rmon.rx-pkts1024to1518
ok 7 ethtool_rmon.rx-pkts1519to10240
ok 8 ethtool_rmon.tx-pkts64to64
ok 9 ethtool_rmon.tx-pkts65to127
ok 10 ethtool_rmon.tx-pkts128to255
ok 11 ethtool_rmon.tx-pkts256to511
ok 12 ethtool_rmon.tx-pkts512to1023
ok 13 ethtool_rmon.tx-pkts1024to1518
ok 14 ethtool_rmon.tx-pkts1519to10240
# Totals: pass:14 fail:0 xfail:0 xpass:0 skip:0 error:0

Signed-off-by: Ioana Ciornei <ioana.ciornei@xxxxxxx>
---
Changes in v4:
- patch is added in this version so that ethtool_rmon.sh is converted to
KTAP output

.../selftests/drivers/net/hw/ethtool_rmon.sh | 24 ++++++++++++-------
1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/tools/testing/selftests/drivers/net/hw/ethtool_rmon.sh b/tools/testing/selftests/drivers/net/hw/ethtool_rmon.sh
index f290ce1832f1..ed81bdc33536 100755
--- a/tools/testing/selftests/drivers/net/hw/ethtool_rmon.sh
+++ b/tools/testing/selftests/drivers/net/hw/ethtool_rmon.sh
@@ -11,10 +11,12 @@ ALL_TESTS="
NUM_NETIFS=2
lib_dir=$(dirname "$0")
source "$lib_dir"/../../../net/forwarding/lib.sh
+source "$lib_dir"/../../../kselftest/ktap_helpers.sh

UINT32_MAX=$((2**32 - 1))
ETH_FCS_LEN=4
ETH_HLEN=$((6+6+2))
+TEST_NAME=$(basename "$0" .sh)

declare -A netif_mtu

@@ -76,29 +78,28 @@ rmon_histogram()
local nbuckets=0
local step=

- RET=0
-
while read -r -a bucket; do
- step="$set-pkts${bucket[0]}to${bucket[1]} on $iface"
+ step="$set-pkts${bucket[0]}to${bucket[1]}"

for if in "$iface" "$neigh"; do
if ! ensure_mtu "$if" "${bucket[0]}"; then
- log_test_xfail "$if does not support the required MTU for $step"
+ ktap_print_msg "$if does not support the required MTU for $step"
+ ktap_test_xfail "$TEST_NAME.$step"
return
fi
done

if ! bucket_test "$iface" "$neigh" "$set" "$nbuckets" "${bucket[0]}"; then
- check_err 1 "$step failed"
+ ktap_test_fail "$TEST_NAME.$step"
return 1
fi
- log_test "$step"
+ ktap_test_pass "$TEST_NAME.$step"
nbuckets=$((nbuckets + 1))
done < <(ethtool --json -S "$iface" --groups rmon | \
jq -r ".[0].rmon[\"${set}-pktsNtoM\"][]|[.low, .high]|@tsv" 2>/dev/null)

if [ "$nbuckets" -eq 0 ]; then
- log_test_xfail "$iface does not support $set histogram counters"
+ ktap_print_msg "$iface does not support $set histogram counters"
return
fi
}
@@ -139,9 +140,16 @@ cleanup()
check_ethtool_counter_group_support
trap cleanup EXIT

+bucket_count=$(ethtool --json -S "${NETIFS[p1]}" --groups rmon | \
+ jq -r '.[0].rmon |
+ "\((."rx-pktsNtoM" | length) +
+ (."tx-pktsNtoM" | length))"')
+ktap_print_header
+ktap_set_plan "$bucket_count"
+
setup_prepare
setup_wait

tests_run

-exit "$EXIT_STATUS"
+ktap_finished
--
2.25.1