Merge branch 'enhance-network-interface-feature-testing'

Abhinav Jain says:

====================
Enhance network interface feature testing

This small series includes fixes for creation of veth pairs for
networkless kernels & adds tests for turning the different network
interface features on and off in selftests/net/netdevice.sh script.
Tested using vng and compiles for network as well as networkless kernel.

   # selftests: net: netdevice.sh
   # No valid network device found, creating veth pair
   # PASS: veth0: set interface up
   # PASS: veth0: set MAC address
   # XFAIL: veth0: set IP address unsupported for veth*
   # PASS: veth0: ethtool list features
   # PASS: veth0: Turned off feature: rx-checksumming
   # PASS: veth0: Turned on feature: rx-checksumming
   # PASS: veth0: Restore feature rx-checksumming to initial state on
   # Actual changes:
   # tx-checksum-ip-generic: off

   ...

   # PASS: veth0: Turned on feature: rx-udp-gro-forwarding
   # PASS: veth0: Restore feature rx-udp-gro-forwarding to initial state off
   # Cannot get register dump: Operation not supported
   # XFAIL: veth0: ethtool dump not supported
   # PASS: veth0: ethtool stats
   # PASS: veth0: stop interface
====================

Link: https://patch.msgid.link/20240821171903.118324-1-jain.abhinav177@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Jakub Kicinski 2024-08-22 16:56:09 -07:00
commit 1cf60c6121

View File

@ -67,8 +67,12 @@ kci_net_setup()
return $ksft_skip
fi
# TODO what ipaddr to set ? DHCP ?
echo "SKIP: $netdev: set IP address"
if [ "$veth_created" ]; then
echo "XFAIL: $netdev: set IP address unsupported for veth*"
else
# TODO what ipaddr to set ? DHCP ?
echo "SKIP: $netdev: set IP address"
fi
return $ksft_skip
}
@ -86,7 +90,7 @@ kci_netdev_ethtool_test()
ret=$?
if [ $ret -ne 0 ];then
if [ $ret -eq "$1" ];then
echo "SKIP: $netdev: ethtool $2 not supported"
echo "XFAIL: $netdev: ethtool $2 not supported"
return $ksft_skip
else
echo "FAIL: $netdev: ethtool $2"
@ -124,11 +128,45 @@ 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"
[ "$FIXED" != "[fixed]" ] || continue # Skip fixed features
feature="${FEATURE%:*}"
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" "$VALUE"
if [ $? -eq 0 ]; then
echo "PASS: $netdev: Restore feature $feature" \
"to initial state $VALUE"
else
echo "FAIL: $netdev: Failed to restore feature" \
"$feature to initial state $VALUE"
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"
return 0
}
@ -196,10 +234,24 @@ if [ ! -e "$TMP_LIST_NETDEV" ];then
fi
ip link show |grep '^[0-9]' | grep -oE '[[:space:]].*eth[0-9]*:|[[:space:]].*enp[0-9]s[0-9]:' | cut -d\ -f2 | cut -d: -f1> "$TMP_LIST_NETDEV"
if [ ! -s "$TMP_LIST_NETDEV" ]; then
echo "No valid network device found, creating veth pair"
ip link add veth0 type veth peer name veth1
echo "veth0" > "$TMP_LIST_NETDEV"
veth_created=1
fi
while read netdev
do
kci_test_netdev "$netdev"
done < "$TMP_LIST_NETDEV"
#clean up veth interface pair if it was created
if [ "$veth_created" ]; then
ip link delete veth0
echo "Removed veth pair"
fi
rm "$TMP_LIST_NETDEV"
exit 0