a95856aafd2aba07086482ae51f560491b8d8d36
[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 }