Add macsec offload VLAN tests using the netsim VLAN support just added. In case that VLAN support is missing (e.g. when running these tests on older kernels), the VLAN tests are simply skipped. Signed-off-by: Cosmin Ratiu --- .../drivers/net/netdevsim/ethtool-common.sh | 5 +- .../drivers/net/netdevsim/macsec-offload.sh | 59 +++++++++++++++++++ 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/drivers/net/netdevsim/ethtool-common.sh b/tools/testing/selftests/drivers/net/netdevsim/ethtool-common.sh index 80160579e0cc..b80b88240883 100644 --- a/tools/testing/selftests/drivers/net/netdevsim/ethtool-common.sh +++ b/tools/testing/selftests/drivers/net/netdevsim/ethtool-common.sh @@ -30,16 +30,17 @@ function check { if [ $code $cop 0 ]; then ((num_errors++)) - return + return 1 fi if [ "$str" != "$exp_str" ]; then echo -e "Expected: '$exp_str', got '$str'" ((num_errors++)) - return + return 1 fi ((num_passes++)) + return 0 } function make_netdev { diff --git a/tools/testing/selftests/drivers/net/netdevsim/macsec-offload.sh b/tools/testing/selftests/drivers/net/netdevsim/macsec-offload.sh index 98033e6667d2..c4af47eec9fa 100755 --- a/tools/testing/selftests/drivers/net/netdevsim/macsec-offload.sh +++ b/tools/testing/selftests/drivers/net/netdevsim/macsec-offload.sh @@ -108,6 +108,65 @@ TMP_FEATS_ON_3="$(ethtool -k $MACSEC_NETDEV)" check $? +ip link del $MACSEC_NETDEV + + +# +# test VLAN filter propagation through macsec +# + +VLAN_DFS="$NSIM_DEV_DFS/vlan" + +check_vid() { + local vid=$1 + local expected=$2 + + if grep -q "ctag $vid" "$VLAN_DFS" 2>/dev/null; then + present=1 + else + present=0 + fi + [ "$present" -eq "$expected" ] +} + +# Skip VLAN tests if nsim doesn't support VLANs +if [ -f $VLAN_DFS ]; then + ip link add link $NSIM_NETDEV $MACSEC_NETDEV type macsec offload mac + check $? + ip link add link $MACSEC_NETDEV ${MACSEC_NETDEV}.10 type vlan id 10 + check $? + check_vid 10 1 + check $? || echo "VID 10 should be on $MACSEC_NETDEV with offload ON" + + ip link add link $NSIM_NETDEV ${MACSEC_NETDEV}2 type macsec port 5 + check $? + ip link add link ${MACSEC_NETDEV}2 ${MACSEC_NETDEV}2.20 type vlan id 20 + check $? + check_vid 20 0 + check $? || echo "VID 20 should NOT be on $MACSEC_NETDEV2 with offload OFF" + + ip link set ${MACSEC_NETDEV}2 type macsec offload mac + check $? + check_vid 20 1 + check $? || echo "VID 20 should appear after offload ON" + + ip link set ${MACSEC_NETDEV}2 type macsec offload off + check $? + check_vid 20 0 + check $? || echo "VID 20 should disappear after offload OFF" + + ip link del ${MACSEC_NETDEV}.10 + check $? + check_vid 10 0 + check $? || echo "VID 10 should be gone after VLAN delete with offload ON" + + ip link del ${MACSEC_NETDEV}2.20 + ip link del ${MACSEC_NETDEV}2 + ip link del $MACSEC_NETDEV +else + echo "SKIP: macsec VLAN tests, no netdevsim support." +fi + if [ $num_errors -eq 0 ]; then echo "PASSED all $((num_passes)) checks" exit 0 -- 2.49.0