tools/testing/selftests/drivers/net/netdevsim/ethtool-fec.sh

Source file repositories/reference/linux-study-clean/tools/testing/selftests/drivers/net/netdevsim/ethtool-fec.sh

File Facts

System
Linux kernel
Corpus path
tools/testing/selftests/drivers/net/netdevsim/ethtool-fec.sh
Extension
.sh
Size
3171 bytes
Lines
115
Domain
Support Tooling And Documentation
Bucket
tools
Inferred role
Support Tooling And Documentation: tools
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

#!/bin/bash
# SPDX-License-Identifier: GPL-2.0-only

source ethtool-common.sh

NSIM_NETDEV=$(make_netdev)
[ a$ETHTOOL == a ] && ETHTOOL=ethtool

set -o pipefail

# Since commit 2b3ddcb35357 ("ethtool: fec: Change the prompt ...")
# in ethtool CLI the Configured lines start with Supported/Configured.
configured=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2 | head -1 | cut -d' ' -f1)

# netdevsim starts out with None/None
s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
check $? "$s" "$configured FEC encodings: None
Active FEC encoding: None"

# Test Auto
$ETHTOOL --set-fec $NSIM_NETDEV encoding auto
check $?
s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
check $? "$s" "$configured FEC encodings: Auto
Active FEC encoding: Off"

# Test case in-sensitivity
for o in off Off OFF; do
    $ETHTOOL --set-fec $NSIM_NETDEV encoding $o
    check $?
    s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
    check $? "$s" "$configured FEC encodings: Off
Active FEC encoding: Off"
done

for o in BaseR baser BAser; do
    $ETHTOOL --set-fec $NSIM_NETDEV encoding $o
    check $?
    s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
    check $? "$s" "$configured FEC encodings: BaseR
Active FEC encoding: BaseR"
done

for o in llrs rs; do
    $ETHTOOL --set-fec $NSIM_NETDEV encoding $o
    check $?
    s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
    check $? "$s" "$configured FEC encodings: ${o^^}
Active FEC encoding: ${o^^}"
done

# Test multiple bits
$ETHTOOL --set-fec $NSIM_NETDEV encoding rs llrs
check $?
s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
check $? "$s" "$configured FEC encodings: RS LLRS
Active FEC encoding: LLRS"

$ETHTOOL --set-fec $NSIM_NETDEV encoding rs off auto
check $?
s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
check $? "$s" "$configured FEC encodings: Auto Off RS
Active FEC encoding: RS"

# Make sure other link modes are rejected
$ETHTOOL --set-fec $NSIM_NETDEV encoding FIBRE 2>/dev/null
check $? '' '' 1

$ETHTOOL --set-fec $NSIM_NETDEV encoding bla-bla-bla 2>/dev/null
check $? '' '' 1

Annotation

Implementation Notes