mlxsw_lib.sh 1.4 KB

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