xref: /linux/tools/testing/selftests/drivers/net/mlxsw/mlxsw_lib.sh (revision 4b132aacb0768ac1e652cf517097ea6f237214b9)
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3
4##############################################################################
5# Defines
6
7if [[ ! -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
13fi
14
15MLXSW_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
25mlxsw_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_xfail $src:$caller "(Spectrum-$rev only)"
46		return 1
47	fi
48}
49
50mlxsw_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
65mlxsw_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}
78