Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0
0003 
0004 ALL_TESTS="
0005         port_pool_test
0006         port_tc_ip_test
0007         port_tc_arp_test
0008 "
0009 
0010 NUM_NETIFS=2
0011 source ../../../net/forwarding/lib.sh
0012 source ../../../net/forwarding/devlink_lib.sh
0013 source mlxsw_lib.sh
0014 
0015 SB_POOL_ING=0
0016 SB_POOL_EGR_CPU=10
0017 
0018 SB_ITC_CPU_IP=2
0019 SB_ITC_CPU_ARP=2
0020 SB_ITC=0
0021 
0022 h1_create()
0023 {
0024         simple_if_init $h1 192.0.1.1/24
0025 }
0026 
0027 h1_destroy()
0028 {
0029         simple_if_fini $h1 192.0.1.1/24
0030 }
0031 
0032 h2_create()
0033 {
0034         simple_if_init $h2 192.0.1.2/24
0035 }
0036 
0037 h2_destroy()
0038 {
0039         simple_if_fini $h2 192.0.1.2/24
0040 }
0041 
0042 sb_occ_pool_check()
0043 {
0044         local dl_port=$1; shift
0045         local pool=$1; shift
0046         local exp_max_occ=$1
0047         local max_occ
0048         local err=0
0049 
0050         max_occ=$(devlink sb -j occupancy show $dl_port \
0051                   | jq -e ".[][][\"pool\"][\"$pool\"][\"max\"]")
0052 
0053         if [[ "$max_occ" -ne "$exp_max_occ" ]]; then
0054                 err=1
0055         fi
0056 
0057         echo $max_occ
0058         return $err
0059 }
0060 
0061 sb_occ_itc_check()
0062 {
0063         local dl_port=$1; shift
0064         local itc=$1; shift
0065         local exp_max_occ=$1
0066         local max_occ
0067         local err=0
0068 
0069         max_occ=$(devlink sb -j occupancy show $dl_port \
0070                   | jq -e ".[][][\"itc\"][\"$itc\"][\"max\"]")
0071 
0072         if [[ "$max_occ" -ne "$exp_max_occ" ]]; then
0073                 err=1
0074         fi
0075 
0076         echo $max_occ
0077         return $err
0078 }
0079 
0080 sb_occ_etc_check()
0081 {
0082         local dl_port=$1; shift
0083         local etc=$1; shift
0084         local exp_max_occ=$1; shift
0085         local max_occ
0086         local err=0
0087 
0088         max_occ=$(devlink sb -j occupancy show $dl_port \
0089                   | jq -e ".[][][\"etc\"][\"$etc\"][\"max\"]")
0090 
0091         if [[ "$max_occ" -ne "$exp_max_occ" ]]; then
0092                 err=1
0093         fi
0094 
0095         echo $max_occ
0096         return $err
0097 }
0098 
0099 port_pool_test()
0100 {
0101         local exp_max_occ=288
0102         local max_occ
0103 
0104         devlink sb occupancy clearmax $DEVLINK_DEV
0105 
0106         $MZ $h1 -c 1 -p 160 -a $h1mac -b $h2mac -A 192.0.1.1 -B 192.0.1.2 \
0107                 -t ip -q
0108 
0109         devlink sb occupancy snapshot $DEVLINK_DEV
0110 
0111         RET=0
0112         max_occ=$(sb_occ_pool_check $dl_port1 $SB_POOL_ING $exp_max_occ)
0113         check_err $? "Expected iPool($SB_POOL_ING) max occupancy to be $exp_max_occ, but got $max_occ"
0114         log_test "physical port's($h1) ingress pool"
0115 
0116         RET=0
0117         max_occ=$(sb_occ_pool_check $dl_port2 $SB_POOL_ING $exp_max_occ)
0118         check_err $? "Expected iPool($SB_POOL_ING) max occupancy to be $exp_max_occ, but got $max_occ"
0119         log_test "physical port's($h2) ingress pool"
0120 
0121         RET=0
0122         max_occ=$(sb_occ_pool_check $cpu_dl_port $SB_POOL_EGR_CPU $exp_max_occ)
0123         check_err $? "Expected ePool($SB_POOL_EGR_CPU) max occupancy to be $exp_max_occ, but got $max_occ"
0124         log_test "CPU port's egress pool"
0125 }
0126 
0127 port_tc_ip_test()
0128 {
0129         local exp_max_occ=288
0130         local max_occ
0131 
0132         devlink sb occupancy clearmax $DEVLINK_DEV
0133 
0134         $MZ $h1 -c 1 -p 160 -a $h1mac -b $h2mac -A 192.0.1.1 -B 192.0.1.2 \
0135                 -t ip -q
0136 
0137         devlink sb occupancy snapshot $DEVLINK_DEV
0138 
0139         RET=0
0140         max_occ=$(sb_occ_itc_check $dl_port2 $SB_ITC $exp_max_occ)
0141         check_err $? "Expected ingress TC($SB_ITC) max occupancy to be $exp_max_occ, but got $max_occ"
0142         log_test "physical port's($h1) ingress TC - IP packet"
0143 
0144         RET=0
0145         max_occ=$(sb_occ_itc_check $dl_port2 $SB_ITC $exp_max_occ)
0146         check_err $? "Expected ingress TC($SB_ITC) max occupancy to be $exp_max_occ, but got $max_occ"
0147         log_test "physical port's($h2) ingress TC - IP packet"
0148 
0149         RET=0
0150         max_occ=$(sb_occ_etc_check $cpu_dl_port $SB_ITC_CPU_IP $exp_max_occ)
0151         check_err $? "Expected egress TC($SB_ITC_CPU_IP) max occupancy to be $exp_max_occ, but got $max_occ"
0152         log_test "CPU port's egress TC - IP packet"
0153 }
0154 
0155 port_tc_arp_test()
0156 {
0157         local exp_max_occ=96
0158         local max_occ
0159 
0160         if [[ $MLXSW_CHIP != "mlxsw_spectrum" ]]; then
0161                 exp_max_occ=144
0162         fi
0163 
0164         devlink sb occupancy clearmax $DEVLINK_DEV
0165 
0166         $MZ $h1 -c 1 -p 160 -a $h1mac -A 192.0.1.1 -t arp -q
0167 
0168         devlink sb occupancy snapshot $DEVLINK_DEV
0169 
0170         RET=0
0171         max_occ=$(sb_occ_itc_check $dl_port2 $SB_ITC $exp_max_occ)
0172         check_err $? "Expected ingress TC($SB_ITC) max occupancy to be $exp_max_occ, but got $max_occ"
0173         log_test "physical port's($h1) ingress TC - ARP packet"
0174 
0175         RET=0
0176         max_occ=$(sb_occ_itc_check $dl_port2 $SB_ITC $exp_max_occ)
0177         check_err $? "Expected ingress TC($SB_ITC) max occupancy to be $exp_max_occ, but got $max_occ"
0178         log_test "physical port's($h2) ingress TC - ARP packet"
0179 
0180         RET=0
0181         max_occ=$(sb_occ_etc_check $cpu_dl_port $SB_ITC_CPU_ARP $exp_max_occ)
0182         check_err $? "Expected egress TC($SB_ITC_IP2ME) max occupancy to be $exp_max_occ, but got $max_occ"
0183         log_test "CPU port's egress TC - ARP packet"
0184 }
0185 
0186 setup_prepare()
0187 {
0188         h1=${NETIFS[p1]}
0189         h2=${NETIFS[p2]}
0190 
0191         h1mac=$(mac_get $h1)
0192         h2mac=$(mac_get $h2)
0193 
0194         dl_port1=$(devlink_port_by_netdev $h1)
0195         dl_port2=$(devlink_port_by_netdev $h2)
0196 
0197         cpu_dl_port=$(devlink_cpu_port_get)
0198 
0199         vrf_prepare
0200 
0201         h1_create
0202         h2_create
0203 }
0204 
0205 cleanup()
0206 {
0207         pre_cleanup
0208 
0209         h2_destroy
0210         h1_destroy
0211 
0212         vrf_cleanup
0213 }
0214 
0215 trap cleanup EXIT
0216 
0217 setup_prepare
0218 setup_wait
0219 
0220 tests_run
0221 
0222 exit $EXIT_STATUS