Path: blob/master/tools/testing/selftests/drivers/net/netdevsim/macsec-offload.sh
26299 views
#!/bin/bash1# SPDX-License-Identifier: GPL-2.0-only23source ethtool-common.sh45NSIM_NETDEV=$(make_netdev)6MACSEC_NETDEV=macsec_nsim78set -o pipefail910if ! ethtool -k $NSIM_NETDEV | grep -q 'macsec-hw-offload: on'; then11echo "SKIP: netdevsim doesn't support MACsec offload"12exit 413fi1415if ! ip link add link $NSIM_NETDEV $MACSEC_NETDEV type macsec offload mac 2>/dev/null; then16echo "SKIP: couldn't create macsec device"17exit 418fi19ip link del $MACSEC_NETDEV2021#22# test macsec offload API23#2425ip link add link $NSIM_NETDEV "${MACSEC_NETDEV}" type macsec port 4 offload mac26check $?2728ip link add link $NSIM_NETDEV "${MACSEC_NETDEV}2" type macsec address "aa:bb:cc:dd:ee:ff" port 5 offload mac29check $?3031ip link add link $NSIM_NETDEV "${MACSEC_NETDEV}3" type macsec sci abbacdde01020304 offload mac32check $?3334ip link add link $NSIM_NETDEV "${MACSEC_NETDEV}4" type macsec port 8 offload mac 2> /dev/null35check $? '' '' 13637ip macsec add "${MACSEC_NETDEV}" tx sa 0 pn 1024 on key 01 1234567890123456789012345678901238check $?3940ip macsec add "${MACSEC_NETDEV}" rx port 1234 address "1c:ed:de:ad:be:ef"41check $?4243ip macsec add "${MACSEC_NETDEV}" rx port 1234 address "1c:ed:de:ad:be:ef" sa 0 pn 1 on \44key 00 0123456789abcdef0123456789abcdef45check $?4647ip macsec add "${MACSEC_NETDEV}" rx port 1235 address "1c:ed:de:ad:be:ef" 2> /dev/null48check $? '' '' 14950# can't disable macsec offload when SAs are configured51ip link set "${MACSEC_NETDEV}" type macsec offload off 2> /dev/null52check $? '' '' 15354ip macsec offload "${MACSEC_NETDEV}" off 2> /dev/null55check $? '' '' 15657# toggle macsec offload via rtnetlink58ip link set "${MACSEC_NETDEV}2" type macsec offload off59check $?6061ip link set "${MACSEC_NETDEV}2" type macsec offload mac62check $?6364# toggle macsec offload via genetlink65ip macsec offload "${MACSEC_NETDEV}2" off66check $?6768ip macsec offload "${MACSEC_NETDEV}2" mac69check $?7071for dev in ${MACSEC_NETDEV}{,2,3} ; do72ip link del $dev73check $?74done757677#78# test ethtool features when toggling offload79#8081ip link add link $NSIM_NETDEV $MACSEC_NETDEV type macsec offload mac82TMP_FEATS_ON_1="$(ethtool -k $MACSEC_NETDEV)"8384ip link set $MACSEC_NETDEV type macsec offload off85TMP_FEATS_OFF_1="$(ethtool -k $MACSEC_NETDEV)"8687ip link set $MACSEC_NETDEV type macsec offload mac88TMP_FEATS_ON_2="$(ethtool -k $MACSEC_NETDEV)"8990[ "$TMP_FEATS_ON_1" = "$TMP_FEATS_ON_2" ]91check $?9293ip link del $MACSEC_NETDEV9495ip link add link $NSIM_NETDEV $MACSEC_NETDEV type macsec96check $?9798TMP_FEATS_OFF_2="$(ethtool -k $MACSEC_NETDEV)"99[ "$TMP_FEATS_OFF_1" = "$TMP_FEATS_OFF_2" ]100check $?101102ip link set $MACSEC_NETDEV type macsec offload mac103check $?104105TMP_FEATS_ON_3="$(ethtool -k $MACSEC_NETDEV)"106[ "$TMP_FEATS_ON_1" = "$TMP_FEATS_ON_3" ]107check $?108109110if [ $num_errors -eq 0 ]; then111echo "PASSED all $((num_passes)) checks"112exit 0113else114echo "FAILED $num_errors/$((num_errors+num_passes)) checks"115exit 1116fi117118119