selftests: mlxsw: Add QOS test for maximum use of descriptors
[platform/kernel/linux-starfive.git] / tools / testing / selftests / drivers / net / mlxsw / mlxsw_lib.sh
1 #!/bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3
4 ##############################################################################
5 # Defines
6
7 if [[ ! -v MLXSW_CHIP ]]; then
8         MLXSW_CHIP=$(devlink -j dev info $DEVLINK_DEV | jq -r '.[][]["driver"]')
9         if [ -z "$MLXSW_CHIP" ]; then
10                 echo "SKIP: Device $DEVLINK_DEV doesn't support devlink info command"
11                 exit 1
12         fi
13 fi
14
15 MLXSW_SPECTRUM_REV=$(case $MLXSW_CHIP in
16                              mlxsw_spectrum)
17                                      echo 1 ;;
18                              mlxsw_spectrum*)
19                                      echo ${MLXSW_CHIP#mlxsw_spectrum} ;;
20                              *)
21                                      echo "Couldn't determine Spectrum chip revision." \
22                                           > /dev/stderr ;;
23                      esac)
24
25 mlxsw_on_spectrum()
26 {
27         local rev=$1; shift
28         local op="=="
29         local rev2=${rev%+}
30
31         if [[ $rev2 != $rev ]]; then
32                 op=">="
33         fi
34
35         ((MLXSW_SPECTRUM_REV $op rev2))
36 }
37
38 __mlxsw_only_on_spectrum()
39 {
40         local rev=$1; shift
41         local caller=$1; shift
42         local src=$1; shift
43
44         if ! mlxsw_on_spectrum "$rev"; then
45                 log_test_skip $src:$caller "(Spectrum-$rev only)"
46                 return 1
47         fi
48 }
49
50 mlxsw_only_on_spectrum()
51 {
52         local caller=${FUNCNAME[1]}
53         local src=${BASH_SOURCE[1]}
54         local rev
55
56         for rev in "$@"; do
57                 if __mlxsw_only_on_spectrum "$rev" "$caller" "$src"; then
58                         return 0
59                 fi
60         done
61
62         return 1
63 }
64
65 mlxsw_max_descriptors_get()
66 {
67         local spectrum_rev=$MLXSW_SPECTRUM_REV
68
69         case $spectrum_rev in
70         1) echo 81920 ;;
71         2) echo 136960 ;;
72         3) echo 204800 ;;
73         4) echo 220000 ;;
74         *) echo "Unknown max descriptors for chip revision." > /dev/stderr
75            return 1 ;;
76         esac
77 }