[PATCH net-next v3 8/9] selftests: drivers: hw: update ethtool_rmon to work with a single local interface

Ioana Ciornei posted 9 patches 2 weeks, 3 days ago
There is a newer version of this series
[PATCH net-next v3 8/9] selftests: drivers: hw: update ethtool_rmon to work with a single local interface
Posted by Ioana Ciornei 2 weeks, 3 days ago
This patch finalizes the transition to work with a single local
interface for the ethtool_rmon.sh test. Each 'ip link' and 'ethtool'
command used by the test is annotated with the necessary run_on in
order to be executed on the necessary target system, be it local, in
another network namespace or through ssh.

Since we need NETIF up and running also for control traffic, we now
expect that the interfaces are up and running and do not touch bring
them up or down at the end of the test. This is also documented in the
drivers/net/README.rst.

The ethtool_rmon.sh script can still be used in the older fashion by
passing two interfaces as command line arguments, the only restriction
is that those interfaces need to be already up.

As part of the kselftest infrastructure, this test can be run in the
following manner:

 $ make -C tools/testing/selftests/ TARGETS="drivers/net drivers/net/hw" \
 install INSTALL_PATH=/tmp/ksft-net-drv
 $ cd /tmp/ksft-net-drv/
 $ cat > ./drivers/net/net.config <<EOF
 NETIF=endpmac17
 LOCAL_V4=17.0.0.1
 REMOTE_V4=17.0.0.2
 REMOTE_TYPE=ssh
 REMOTE_ARGS=root@192.168.5.200
 EOF

 $ ./run_kselftest.sh -t drivers/net/hw:ethtool_rmon.sh
 TAP version 13
 1..1
 # timeout set to 0
 # selftests: drivers/net/hw: ethtool_rmon.sh
 # TEST: rx-pkts64to64 on endpmac17                                    [ OK ]
 # TEST: rx-pkts65to127 on endpmac17                                   [ OK ]
 # TEST: rx-pkts128to255 on endpmac17                                  [ OK ]
 # TEST: rx-pkts256to511 on endpmac17                                  [ OK ]
 # TEST: rx-pkts512to1023 on endpmac17                                 [ OK ]
 # TEST: rx-pkts1024to1518 on endpmac17                                [ OK ]
 # TEST: rx-pkts1519to10240 on endpmac17                               [ OK ]
 # TEST: tx-pkts64to64 on endpmac17                                    [ OK ]
 # TEST: tx-pkts65to127 on endpmac17                                   [ OK ]
 # TEST: tx-pkts128to255 on endpmac17                                  [ OK ]
 # TEST: tx-pkts256to511 on endpmac17                                  [ OK ]
 # TEST: tx-pkts512to1023 on endpmac17                                 [ OK ]
 # TEST: tx-pkts1024to1518 on endpmac17                                [ OK ]
 # TEST: tx-pkts1519to10240 on endpmac17                               [ OK ]
 ok 1 selftests: drivers/net/hw: ethtool_rmon.sh

Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
---
Changes in v3:
- none
Changes in v2:
- patch is new


 .../selftests/drivers/net/hw/ethtool_rmon.sh  | 22 +++++++++----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/tools/testing/selftests/drivers/net/hw/ethtool_rmon.sh b/tools/testing/selftests/drivers/net/hw/ethtool_rmon.sh
index 1baaaab3c3a4..5e5fc80867a0 100755
--- a/tools/testing/selftests/drivers/net/hw/ethtool_rmon.sh
+++ b/tools/testing/selftests/drivers/net/hw/ethtool_rmon.sh
@@ -25,9 +25,9 @@ ensure_mtu()
 	local required=$((len - ETH_HLEN - ETH_FCS_LEN))
 	local current
 
-	current=$(ip -j link show dev "$iface" | jq -r '.[0].mtu')
+	current=$(run_on "$iface" ip -j link show dev "$iface" | jq -r '.[0].mtu')
 	if [ "$current" -lt "$required" ]; then
-		ip link set dev "$iface" mtu "$required" || return 1
+		run_on "$iface" ip link set dev "$iface" mtu "$required" || return 1
 	fi
 }
 
@@ -50,13 +50,13 @@ bucket_test()
 	len=$((len - ETH_FCS_LEN))
 	len=$((len > 0 ? len : 0))
 
-	before=$(ethtool --json -S "$iface" --groups rmon | \
+	before=$(run_on "$iface" ethtool --json -S "$iface" --groups rmon | \
 		jq -r ".[0].rmon[\"${set}-pktsNtoM\"][$bucket].val")
 
 	# Send 10k one way and 20k in the other, to detect counters
 	# mapped to the wrong direction
-	"$MZ" "$neigh" -q -c "$num_rx" -p "$len" -a own -b bcast -d 10us
-	"$MZ" "$iface" -q -c "$num_tx" -p "$len" -a own -b bcast -d 10us
+	run_on "$neigh" "$MZ" "$neigh" -q -c "$num_rx" -p "$len" -a own -b bcast -d 10us
+	run_on "$iface" "$MZ" "$iface" -q -c "$num_tx" -p "$len" -a own -b bcast -d 10us
 
 	after=$(ethtool --json -S "$iface" --groups rmon | \
 		jq -r ".[0].rmon[\"${set}-pktsNtoM\"][$bucket].val")
@@ -94,7 +94,7 @@ rmon_histogram()
 		fi
 		log_test "$step"
 		nbuckets=$((nbuckets + 1))
-	done < <(ethtool --json -S "$iface" --groups rmon | \
+	done < <(run_on "$iface" ethtool --json -S "$iface" --groups rmon | \
 		jq -r ".[0].rmon[\"${set}-pktsNtoM\"][]|[.low, .high]|@tsv" 2>/dev/null)
 
 	if [ "$nbuckets" -eq 0 ]; then
@@ -119,8 +119,8 @@ setup_prepare()
 	h2=${NETIFS[p2]}
 
 	for iface in "$h1" "$h2"; do
-		netif_mtu["$iface"]=$(ip -j link show dev "$iface" | jq -r '.[0].mtu')
-		ip link set dev "$iface" up
+		netif_mtu["$iface"]=$(run_on "$iface" ip -j link show dev "$iface" | \
+			jq -r '.[0].mtu')
 	done
 }
 
@@ -128,10 +128,10 @@ cleanup()
 {
 	pre_cleanup
 
+	# Do not bring down the interfaces, just configure the initial MTU
 	for iface in "$h2" "$h1"; do
-		ip link set dev "$iface" \
-			mtu "${netif_mtu[$iface]}" \
-			down
+		run_on "$iface" ip link set dev "$iface" \
+			mtu "${netif_mtu[$iface]}"
 	done
 }
 
-- 
2.25.1
Re: [PATCH net-next v3 8/9] selftests: drivers: hw: update ethtool_rmon to work with a single local interface
Posted by Petr Machata 2 weeks, 2 days ago
Ioana Ciornei <ioana.ciornei@nxp.com> writes:

> This patch finalizes the transition to work with a single local
> interface for the ethtool_rmon.sh test. Each 'ip link' and 'ethtool'
> command used by the test is annotated with the necessary run_on in
> order to be executed on the necessary target system, be it local, in
> another network namespace or through ssh.
>
> Since we need NETIF up and running also for control traffic, we now
> expect that the interfaces are up and running and do not touch bring
> them up or down at the end of the test. This is also documented in the
> drivers/net/README.rst.
>
> The ethtool_rmon.sh script can still be used in the older fashion by
> passing two interfaces as command line arguments, the only restriction
> is that those interfaces need to be already up.
>
> As part of the kselftest infrastructure, this test can be run in the
> following manner:
>
>  $ make -C tools/testing/selftests/ TARGETS="drivers/net drivers/net/hw" \
>  install INSTALL_PATH=/tmp/ksft-net-drv
>  $ cd /tmp/ksft-net-drv/
>  $ cat > ./drivers/net/net.config <<EOF
>  NETIF=endpmac17
>  LOCAL_V4=17.0.0.1
>  REMOTE_V4=17.0.0.2
>  REMOTE_TYPE=ssh
>  REMOTE_ARGS=root@192.168.5.200
>  EOF
>
>  $ ./run_kselftest.sh -t drivers/net/hw:ethtool_rmon.sh
>  TAP version 13
>  1..1
>  # timeout set to 0
>  # selftests: drivers/net/hw: ethtool_rmon.sh
>  # TEST: rx-pkts64to64 on endpmac17                                    [ OK ]
>  # TEST: rx-pkts65to127 on endpmac17                                   [ OK ]
>  # TEST: rx-pkts128to255 on endpmac17                                  [ OK ]
>  # TEST: rx-pkts256to511 on endpmac17                                  [ OK ]
>  # TEST: rx-pkts512to1023 on endpmac17                                 [ OK ]
>  # TEST: rx-pkts1024to1518 on endpmac17                                [ OK ]
>  # TEST: rx-pkts1519to10240 on endpmac17                               [ OK ]
>  # TEST: tx-pkts64to64 on endpmac17                                    [ OK ]
>  # TEST: tx-pkts65to127 on endpmac17                                   [ OK ]
>  # TEST: tx-pkts128to255 on endpmac17                                  [ OK ]
>  # TEST: tx-pkts256to511 on endpmac17                                  [ OK ]
>  # TEST: tx-pkts512to1023 on endpmac17                                 [ OK ]
>  # TEST: tx-pkts1024to1518 on endpmac17                                [ OK ]
>  # TEST: tx-pkts1519to10240 on endpmac17                               [ OK ]
>  ok 1 selftests: drivers/net/hw: ethtool_rmon.sh
>
> Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>

Reviewed-by: Petr Machata <petrm@nvidia.com>

> @@ -119,8 +119,8 @@ setup_prepare()
>  	h2=${NETIFS[p2]}
>  
>  	for iface in "$h1" "$h2"; do
> -		netif_mtu["$iface"]=$(ip -j link show dev "$iface" | jq -r '.[0].mtu')
> -		ip link set dev "$iface" up
> +		netif_mtu["$iface"]=$(run_on "$iface" ip -j link show dev "$iface" | \
> +			jq -r '.[0].mtu')

BTW we have mtu_set() / mtu_restore() in forwarding/lib.sh

>  	done
>  }
>  
> @@ -128,10 +128,10 @@ cleanup()
>  {
>  	pre_cleanup
>  
> +	# Do not bring down the interfaces, just configure the initial MTU
>  	for iface in "$h2" "$h1"; do
> -		ip link set dev "$iface" \
> -			mtu "${netif_mtu[$iface]}" \
> -			down
> +		run_on "$iface" ip link set dev "$iface" \
> +			mtu "${netif_mtu[$iface]}"
>  	done
>  }