public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Abhinav Jain <jain.abhinav177@gmail.com>
To: kuba@kernel.org, horms@kernel.org, davem@davemloft.net,
	edumazet@google.com, pabeni@redhat.com, shuah@kernel.org,
	netdev@vger.kernel.org, linux-kselftest@vger.kernel.org,
	linux-kernel@vger.kernel.org
Cc: skhan@linuxfoundation.org, javier.carrasco.cruz@gmail.com,
	jain.abhinav177@gmail.com
Subject: [PATCH v3] sefltests: net: Add on/off checks for network interface non fixed features
Date: Fri, 14 Jun 2024 11:32:40 +0000	[thread overview]
Message-ID: <20240614113240.41550-1-jain.abhinav177@gmail.com> (raw)

This patch addresses the TODO (add non fixed feature on/off check).
I have tested it manually on my system after making changes as suggested
in v1 and v2 linked below for reference.
Patch now restores the features being tested to their initial state.

Signed-off-by: Abhinav Jain <jain.abhinav177@gmail.com>
---
PATCH v2:
https://lore.kernel.org/all/20240609132124.51683-1-jain.abhinav177@gmail.com/

Changes since v2:
 - Added a check for netdev if it exists.
 - If netdev doesn't exist, create a veth pair for testing.
 - Restore the feature being tested to its intial state.

PATCH v1:
https://lore.kernel.org/all/20240606212714.27472-1-jain.abhinav177@gmail.com/

Changes since v1:
 - Removed the addition of tail command as it was not required after
   below change.
 - Used read to parse the temp features file rather than using for loop
   and took out awk/grep/sed from v1.
---
 tools/testing/selftests/net/netdevice.sh | 55 +++++++++++++++++++++++-
 1 file changed, 54 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/net/netdevice.sh b/tools/testing/selftests/net/netdevice.sh
index e3afcb424710..d937d39dda6a 100755
--- a/tools/testing/selftests/net/netdevice.sh
+++ b/tools/testing/selftests/net/netdevice.sh
@@ -104,6 +104,20 @@ kci_netdev_ethtool()
 {
 	netdev=$1
 
+	#check if netdev is provided as an argument
+	if [ -z "$netdev" ]; then
+		echo "No network device provided, creating a veth pair"
+		ip link add veth0 type veth peer name veth1
+		netdev="veth0"
+		veth_created=1
+	else
+		#check if the provided netdev exists
+		if ! ip link show "$netdev" > /dev/null 2>&1; then
+			echo "Network device $netdev does not exist."
+			return 1
+		fi
+	fi
+
 	#check presence of ethtool
 	ethtool --version 2>/dev/null >/dev/null
 	if [ $? -ne 0 ];then
@@ -124,11 +138,50 @@ kci_netdev_ethtool()
 		return 1
 	fi
 	echo "PASS: $netdev: ethtool list features"
-	#TODO for each non fixed features, try to turn them on/off
+
+	while read -r FEATURE VALUE FIXED; do
+		[ "$FEATURE" != "Features" ] || continue # Skip "Features" line
+		[ "$FIXED" != "[fixed]" ] || continue # Skip fixed features
+		feature = "${FEATURE%:*}"
+
+		initial_state=$(ethtool -k "$netdev" | grep "$feature:" | awk '{print $2}')
+		ethtool --offload "$netdev" "$feature" off
+		if [ $? -eq 0 ]; then
+			echo "PASS: $netdev: Turned off feature: $feature"
+		else
+			echo "FAIL: $netdev: Failed to turn off feature: $feature"
+		fi
+
+		ethtool --offload "$netdev" "$feature" on
+		if [ $? -eq 0 ]; then
+			echo "PASS: $netdev: Turned on feature: $feature"
+		else
+			echo "FAIL: $netdev: Failed to turn on feature: $feature"
+		fi
+
+		#restore the feature to its initial state
+		ethtool --offload "$netdev" "$feature" "$initial_state"
+		if [$? -eq 0]; then
+			echo "PASS: $netdev: Restore feature $feature to" \
+				" initial state $initial_state"
+		else
+			echo "FAIL: $netdev: Failed to restore feature " \
+				"$feature to initial state $initial_state"
+		fi
+
+	done < "$TMP_ETHTOOL_FEATURES"
+
 	rm "$TMP_ETHTOOL_FEATURES"
 
 	kci_netdev_ethtool_test 74 'dump' "ethtool -d $netdev"
 	kci_netdev_ethtool_test 94 'stats' "ethtool -S $netdev"
+
+	#clean up veth interface pair if it was created
+	if ["$veth_created" ]; then
+		ip link delete veth0
+		echo "Removed veth pair"
+	fi
+
 	return 0
 }
 
-- 
2.34.1


             reply	other threads:[~2024-06-14 11:32 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-14 11:32 Abhinav Jain [this message]
2024-06-15  1:50 ` [PATCH v3] sefltests: net: Add on/off checks for network interface non fixed features Jakub Kicinski

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=20240614113240.41550-1-jain.abhinav177@gmail.com \
    --to=jain.abhinav177@gmail.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=javier.carrasco.cruz@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=shuah@kernel.org \
    --cc=skhan@linuxfoundation.org \
    /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