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