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