1*415b7cefSSabrina Dubroca#!/bin/bash 2*415b7cefSSabrina Dubroca# SPDX-License-Identifier: GPL-2.0-only 3*415b7cefSSabrina Dubroca 4*415b7cefSSabrina Dubrocasource ethtool-common.sh 5*415b7cefSSabrina Dubroca 6*415b7cefSSabrina DubrocaNSIM_NETDEV=$(make_netdev) 7*415b7cefSSabrina DubrocaMACSEC_NETDEV=macsec_nsim 8*415b7cefSSabrina Dubroca 9*415b7cefSSabrina Dubrocaset -o pipefail 10*415b7cefSSabrina Dubroca 11*415b7cefSSabrina Dubrocaif ! ethtool -k $NSIM_NETDEV | grep -q 'macsec-hw-offload: on'; then 12*415b7cefSSabrina Dubroca echo "SKIP: netdevsim doesn't support MACsec offload" 13*415b7cefSSabrina Dubroca exit 4 14*415b7cefSSabrina Dubrocafi 15*415b7cefSSabrina Dubroca 16*415b7cefSSabrina Dubrocaif ! ip link add link $NSIM_NETDEV $MACSEC_NETDEV type macsec offload mac 2>/dev/null; then 17*415b7cefSSabrina Dubroca echo "SKIP: couldn't create macsec device" 18*415b7cefSSabrina Dubroca exit 4 19*415b7cefSSabrina Dubrocafi 20*415b7cefSSabrina Dubrocaip link del $MACSEC_NETDEV 21*415b7cefSSabrina Dubroca 22*415b7cefSSabrina Dubroca# 23*415b7cefSSabrina Dubroca# test macsec offload API 24*415b7cefSSabrina Dubroca# 25*415b7cefSSabrina Dubroca 26*415b7cefSSabrina Dubrocaip link add link $NSIM_NETDEV "${MACSEC_NETDEV}" type macsec port 4 offload mac 27*415b7cefSSabrina Dubrocacheck $? 28*415b7cefSSabrina Dubroca 29*415b7cefSSabrina Dubrocaip link add link $NSIM_NETDEV "${MACSEC_NETDEV}2" type macsec address "aa:bb:cc:dd:ee:ff" port 5 offload mac 30*415b7cefSSabrina Dubrocacheck $? 31*415b7cefSSabrina Dubroca 32*415b7cefSSabrina Dubrocaip link add link $NSIM_NETDEV "${MACSEC_NETDEV}3" type macsec sci abbacdde01020304 offload mac 33*415b7cefSSabrina Dubrocacheck $? 34*415b7cefSSabrina Dubroca 35*415b7cefSSabrina Dubrocaip link add link $NSIM_NETDEV "${MACSEC_NETDEV}4" type macsec port 8 offload mac 2> /dev/null 36*415b7cefSSabrina Dubrocacheck $? '' '' 1 37*415b7cefSSabrina Dubroca 38*415b7cefSSabrina Dubrocaip macsec add "${MACSEC_NETDEV}" tx sa 0 pn 1024 on key 01 12345678901234567890123456789012 39*415b7cefSSabrina Dubrocacheck $? 40*415b7cefSSabrina Dubroca 41*415b7cefSSabrina Dubrocaip macsec add "${MACSEC_NETDEV}" rx port 1234 address "1c:ed:de:ad:be:ef" 42*415b7cefSSabrina Dubrocacheck $? 43*415b7cefSSabrina Dubroca 44*415b7cefSSabrina Dubrocaip macsec add "${MACSEC_NETDEV}" rx port 1234 address "1c:ed:de:ad:be:ef" sa 0 pn 1 on \ 45*415b7cefSSabrina Dubroca key 00 0123456789abcdef0123456789abcdef 46*415b7cefSSabrina Dubrocacheck $? 47*415b7cefSSabrina Dubroca 48*415b7cefSSabrina Dubrocaip macsec add "${MACSEC_NETDEV}" rx port 1235 address "1c:ed:de:ad:be:ef" 2> /dev/null 49*415b7cefSSabrina Dubrocacheck $? '' '' 1 50*415b7cefSSabrina Dubroca 51*415b7cefSSabrina Dubrocafor dev in ${MACSEC_NETDEV}{,2,3} ; do 52*415b7cefSSabrina Dubroca ip link del $dev 53*415b7cefSSabrina Dubroca check $? 54*415b7cefSSabrina Dubrocadone 55*415b7cefSSabrina Dubroca 56*415b7cefSSabrina Dubroca 57*415b7cefSSabrina Dubrocaif [ $num_errors -eq 0 ]; then 58*415b7cefSSabrina Dubroca echo "PASSED all $((num_passes)) checks" 59*415b7cefSSabrina Dubroca exit 0 60*415b7cefSSabrina Dubrocaelse 61*415b7cefSSabrina Dubroca echo "FAILED $num_errors/$((num_errors+num_passes)) checks" 62*415b7cefSSabrina Dubroca exit 1 63*415b7cefSSabrina Dubrocafi 64