1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3 4# Test for port-default priority. Non-IP packets ingress $swp1 and are 5# prioritized according to the default priority specified at the port. 6# rx_octets_prio_* counters are used to verify the prioritization. 7# 8# +----------------------------------+ 9# | H1 | 10# | + $h1 | 11# | | 192.0.2.1/28 | 12# +----|-----------------------------+ 13# | 14# +----|-----------------------------+ 15# | SW | | 16# | + $swp1 | 17# | 192.0.2.2/28 | 18# | dcb app default-prio <prio> | 19# +----------------------------------+ 20 21ALL_TESTS=" 22 ping_ipv4 23 test_defprio 24" 25 26lib_dir=$(dirname $0)/../../../net/forwarding 27 28NUM_NETIFS=2 29: ${HIT_TIMEOUT:=1000} # ms 30source $lib_dir/lib.sh 31 32h1_create() 33{ 34 simple_if_init $h1 192.0.2.1/28 35} 36 37h1_destroy() 38{ 39 simple_if_fini $h1 192.0.2.1/28 40} 41 42switch_create() 43{ 44 ip link set dev $swp1 up 45 ip addr add dev $swp1 192.0.2.2/28 46} 47 48switch_destroy() 49{ 50 dcb app flush dev $swp1 default-prio 51 ip addr del dev $swp1 192.0.2.2/28 52 ip link set dev $swp1 down 53} 54 55setup_prepare() 56{ 57 h1=${NETIFS[p1]} 58 swp1=${NETIFS[p2]} 59 60 vrf_prepare 61 62 h1_create 63 switch_create 64} 65 66cleanup() 67{ 68 pre_cleanup 69 70 switch_destroy 71 h1_destroy 72 73 vrf_cleanup 74} 75 76ping_ipv4() 77{ 78 ping_test $h1 192.0.2.2 79} 80 81__test_defprio() 82{ 83 local prio_install=$1; shift 84 local prio_observe=$1; shift 85 local key 86 local t1 87 local i 88 89 RET=0 90 91 dcb app add dev $swp1 default-prio $prio_install 92 93 local t0=$(ethtool_stats_get $swp1 rx_frames_prio_$prio_observe) 94 mausezahn -q $h1 -d 100m -c 10 -t arp reply 95 t1=$(busywait "$HIT_TIMEOUT" until_counter_is ">= $((t0 + 10))" \ 96 ethtool_stats_get $swp1 rx_frames_prio_$prio_observe) 97 98 check_err $? "Default priority $prio_install/$prio_observe: Expected to capture 10 packets, got $((t1 - t0))." 99 log_test "Default priority $prio_install/$prio_observe" 100 101 dcb app del dev $swp1 default-prio $prio_install 102} 103 104test_defprio() 105{ 106 local prio 107 108 for prio in {0..7}; do 109 __test_defprio $prio $prio 110 done 111 112 dcb app add dev $swp1 default-prio 3 113 __test_defprio 0 3 114 __test_defprio 1 3 115 __test_defprio 2 3 116 __test_defprio 4 4 117 __test_defprio 5 5 118 __test_defprio 6 6 119 __test_defprio 7 7 120 dcb app del dev $swp1 default-prio 3 121} 122 123trap cleanup EXIT 124 125setup_prepare 126setup_wait 127 128tests_run 129 130exit $EXIT_STATUS 131