summaryrefslogtreecommitdiff
path: root/tools/testing/selftests/net/forwarding/ethtool_mm.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tools/testing/selftests/net/forwarding/ethtool_mm.sh')
-rwxr-xr-xtools/testing/selftests/net/forwarding/ethtool_mm.sh340
1 files changed, 0 insertions, 340 deletions
diff --git a/tools/testing/selftests/net/forwarding/ethtool_mm.sh b/tools/testing/selftests/net/forwarding/ethtool_mm.sh
deleted file mode 100755
index 50d5bfb17ef1..000000000000
--- a/tools/testing/selftests/net/forwarding/ethtool_mm.sh
+++ /dev/null
@@ -1,340 +0,0 @@
-#!/bin/bash
-# SPDX-License-Identifier: GPL-2.0
-
-ALL_TESTS="
- manual_with_verification_h1_to_h2
- manual_with_verification_h2_to_h1
- manual_without_verification_h1_to_h2
- manual_without_verification_h2_to_h1
- manual_failed_verification_h1_to_h2
- manual_failed_verification_h2_to_h1
- lldp
-"
-
-NUM_NETIFS=2
-REQUIRE_MZ=no
-PREEMPTIBLE_PRIO=0
-source lib.sh
-
-traffic_test()
-{
- local if=$1; shift
- local src=$1; shift
- local num_pkts=10000
- local before=
- local after=
- local delta=
-
- if [ ${has_pmac_stats[$if]} = false ]; then
- src="aggregate"
- fi
-
- before=$(ethtool_std_stats_get $if "eth-mac" "FramesTransmittedOK" $src)
-
- $MZ $if -q -c $num_pkts -p 64 -b bcast -t ip -R $PREEMPTIBLE_PRIO
-
- after=$(ethtool_std_stats_get $if "eth-mac" "FramesTransmittedOK" $src)
-
- delta=$((after - before))
-
- # Allow an extra 1% tolerance for random packets sent by the stack
- [ $delta -ge $num_pkts ] && [ $delta -le $((num_pkts + 100)) ]
-}
-
-manual_with_verification()
-{
- local tx=$1; shift
- local rx=$1; shift
-
- RET=0
-
- # It isn't completely clear from IEEE 802.3-2018 Figure 99-5: Transmit
- # Processing state diagram whether the "send_r" variable (send response
- # to verification frame) should be taken into consideration while the
- # MAC Merge TX direction is disabled. That being said, at least the
- # NXP ENETC does not, and requires tx-enabled on in order to respond to
- # the link partner's verification frames.
- ethtool --set-mm $rx tx-enabled on
- ethtool --set-mm $tx verify-enabled on tx-enabled on
-
- # Wait for verification to finish
- sleep 1
-
- ethtool --json --show-mm $tx | jq -r '.[]."verify-status"' | \
- grep -q 'SUCCEEDED'
- check_err "$?" "Verification did not succeed"
-
- ethtool --json --show-mm $tx | jq -r '.[]."tx-active"' | grep -q 'true'
- check_err "$?" "pMAC TX is not active"
-
- traffic_test $tx "pmac"
- check_err "$?" "Traffic did not get sent through $tx's pMAC"
-
- ethtool --set-mm $tx verify-enabled off tx-enabled off
- ethtool --set-mm $rx tx-enabled off
-
- log_test "Manual configuration with verification: $tx to $rx"
-}
-
-manual_with_verification_h1_to_h2()
-{
- manual_with_verification $h1 $h2
-}
-
-manual_with_verification_h2_to_h1()
-{
- manual_with_verification $h2 $h1
-}
-
-manual_without_verification()
-{
- local tx=$1; shift
- local rx=$1; shift
-
- RET=0
-
- ethtool --set-mm $tx verify-enabled off tx-enabled on
-
- ethtool --json --show-mm $tx | jq -r '.[]."verify-status"' | \
- grep -q 'DISABLED'
- check_err "$?" "Verification is not disabled"
-
- ethtool --json --show-mm $tx | jq -r '.[]."tx-active"' | grep -q 'true'
- check_err "$?" "pMAC TX is not active"
-
- traffic_test $tx "pmac"
- check_err "$?" "Traffic did not get sent through $tx's pMAC"
-
- ethtool --set-mm $tx verify-enabled off tx-enabled off
-
- log_test "Manual configuration without verification: $tx to $rx"
-}
-
-manual_without_verification_h1_to_h2()
-{
- manual_without_verification $h1 $h2
-}
-
-manual_without_verification_h2_to_h1()
-{
- manual_without_verification $h2 $h1
-}
-
-manual_failed_verification()
-{
- local tx=$1; shift
- local rx=$1; shift
-
- RET=0
-
- ethtool --set-mm $rx pmac-enabled off
- ethtool --set-mm $tx verify-enabled on tx-enabled on
-
- # Wait for verification to time out
- sleep 1
-
- ethtool --json --show-mm $tx | jq -r '.[]."verify-status"' | \
- grep -q 'SUCCEEDED'
- check_fail "$?" "Verification succeeded when it shouldn't have"
-
- ethtool --json --show-mm $tx | jq -r '.[]."tx-active"' | grep -q 'true'
- check_fail "$?" "pMAC TX is active when it shouldn't have"
-
- traffic_test $tx "emac"
- check_err "$?" "Traffic did not get sent through $tx's eMAC"
-
- ethtool --set-mm $tx verify-enabled off tx-enabled off
- ethtool --set-mm $rx pmac-enabled on
-
- log_test "Manual configuration with failed verification: $tx to $rx"
-}
-
-manual_failed_verification_h1_to_h2()
-{
- manual_failed_verification $h1 $h2
-}
-
-manual_failed_verification_h2_to_h1()
-{
- manual_failed_verification $h2 $h1
-}
-
-smallest_supported_add_frag_size()
-{
- local iface=$1
- local rx_min_frag_size=
-
- rx_min_frag_size=$(ethtool --json --show-mm $iface | \
- jq '.[]."rx-min-frag-size"')
-
- if [ $rx_min_frag_size -le 60 ]; then
- echo 0
- elif [ $rx_min_frag_size -le 124 ]; then
- echo 1
- elif [ $rx_min_frag_size -le 188 ]; then
- echo 2
- elif [ $rx_min_frag_size -le 252 ]; then
- echo 3
- else
- echo "$iface: RX min frag size $rx_min_frag_size cannot be advertised over LLDP"
- exit 1
- fi
-}
-
-expected_add_frag_size()
-{
- local iface=$1
- local requested=$2
- local min=$(smallest_supported_add_frag_size $iface)
-
- [ $requested -le $min ] && echo $min || echo $requested
-}
-
-lldp_change_add_frag_size()
-{
- local add_frag_size=$1
- local pattern=
-
- lldptool -T -i $h1 -V addEthCaps addFragSize=$add_frag_size >/dev/null
- # Wait for TLVs to be received
- sleep 2
- pattern=$(printf "Additional fragment size: %d" \
- $(expected_add_frag_size $h1 $add_frag_size))
- lldptool -i $h2 -t -n -V addEthCaps | grep -q "$pattern"
-}
-
-lldp()
-{
- RET=0
-
- systemctl start lldpad
-
- # Configure the interfaces to receive and transmit LLDPDUs
- lldptool -L -i $h1 adminStatus=rxtx >/dev/null
- lldptool -L -i $h2 adminStatus=rxtx >/dev/null
-
- # Enable the transmission of Additional Ethernet Capabilities TLV
- lldptool -T -i $h1 -V addEthCaps enableTx=yes >/dev/null
- lldptool -T -i $h2 -V addEthCaps enableTx=yes >/dev/null
-
- # Wait for TLVs to be received
- sleep 2
-
- lldptool -i $h1 -t -n -V addEthCaps | \
- grep -q "Preemption capability active"
- check_err "$?" "$h1 pMAC TX is not active"
-
- lldptool -i $h2 -t -n -V addEthCaps | \
- grep -q "Preemption capability active"
- check_err "$?" "$h2 pMAC TX is not active"
-
- lldp_change_add_frag_size 3
- check_err "$?" "addFragSize 3"
-
- lldp_change_add_frag_size 2
- check_err "$?" "addFragSize 2"
-
- lldp_change_add_frag_size 1
- check_err "$?" "addFragSize 1"
-
- lldp_change_add_frag_size 0
- check_err "$?" "addFragSize 0"
-
- traffic_test $h1 "pmac"
- check_err "$?" "Traffic did not get sent through $h1's pMAC"
-
- traffic_test $h2 "pmac"
- check_err "$?" "Traffic did not get sent through $h2's pMAC"
-
- systemctl stop lldpad
-
- log_test "LLDP"
-}
-
-h1_create()
-{
- ip link set dev $h1 up
-
- tc qdisc add dev $h1 root mqprio num_tc 4 map 0 1 2 3 \
- queues 1@0 1@1 1@2 1@3 \
- fp P E E E \
- hw 1
-
- ethtool --set-mm $h1 pmac-enabled on tx-enabled off verify-enabled off
-}
-
-h2_create()
-{
- ip link set dev $h2 up
-
- ethtool --set-mm $h2 pmac-enabled on tx-enabled off verify-enabled off
-
- tc qdisc add dev $h2 root mqprio num_tc 4 map 0 1 2 3 \
- queues 1@0 1@1 1@2 1@3 \
- fp P E E E \
- hw 1
-}
-
-h1_destroy()
-{
- ethtool --set-mm $h1 pmac-enabled off tx-enabled off verify-enabled off
-
- tc qdisc del dev $h1 root
-
- ip link set dev $h1 down
-}
-
-h2_destroy()
-{
- tc qdisc del dev $h2 root
-
- ethtool --set-mm $h2 pmac-enabled off tx-enabled off verify-enabled off
-
- ip link set dev $h2 down
-}
-
-setup_prepare()
-{
- h1=${NETIFS[p1]}
- h2=${NETIFS[p2]}
-
- h1_create
- h2_create
-}
-
-cleanup()
-{
- pre_cleanup
-
- h2_destroy
- h1_destroy
-}
-
-check_ethtool_mm_support
-check_tc_fp_support
-require_command lldptool
-bail_on_lldpad "autoconfigure the MAC Merge layer" "configure it manually"
-
-for netif in ${NETIFS[@]}; do
- ethtool --show-mm $netif 2>&1 &> /dev/null
- if [[ $? -ne 0 ]]; then
- echo "SKIP: $netif does not support MAC Merge"
- exit $ksft_skip
- fi
-
- if check_ethtool_pmac_std_stats_support $netif eth-mac; then
- has_pmac_stats[$netif]=true
- else
- has_pmac_stats[$netif]=false
- echo "$netif does not report pMAC statistics, falling back to aggregate"
- fi
-done
-
-trap cleanup EXIT
-
-setup_prepare
-setup_wait
-
-tests_run
-
-exit $EXIT_STATUS