2 # SPDX-License-Identifier: GPL-2.0
4 ##############################################################################
7 DEVLINK_DEV
=$
(devlink port show
"${NETIFS[p1]}" -j \
8 | jq
-r '.port | keys[]' | cut
-d/ -f-2)
9 if [ -z "$DEVLINK_DEV" ]; then
10 echo "SKIP: ${NETIFS[p1]} has no devlink device registered for it"
13 if [[ "$(echo $DEVLINK_DEV | grep -c pci)" -eq 0 ]]; then
14 echo "SKIP: devlink device's bus is not PCI"
18 DEVLINK_VIDDID
=$
(lspci
-s $
(echo $DEVLINK_DEV | cut
-d"/" -f2) \
21 ##############################################################################
24 devlink
help 2>&1 |
grep resource
&> /dev
/null
26 echo "SKIP: iproute2 too old, missing devlink resource support"
30 ##############################################################################
33 devlink_resource_names_to_path
()
38 for resource
in "${@}"; do
39 if [ "$path" == "" ]; then
42 path
="${path}/$resource"
49 devlink_resource_get
()
52 local resource_name
=.
[][\"$DEVLINK_DEV\"]
54 resource_name
="$resource_name | .[] | select (.name == \"$name\")"
57 for resource
in "${@}"; do
58 resource_name
="${resource_name} | .[\"resources\"][] | \
59 select (.name == \"$resource\")"
62 devlink
-j resource show
"$DEVLINK_DEV" | jq
"$resource_name"
65 devlink_resource_size_get
()
67 local size
=$
(devlink_resource_get
"$@" | jq
'.["size_new"]')
69 if [ "$size" == "null" ]; then
70 devlink_resource_get
"$@" | jq
'.["size"]'
76 devlink_resource_size_set
()
82 path
=$
(devlink_resource_names_to_path
"$@")
83 devlink resource
set "$DEVLINK_DEV" path
"$path" size
"$new_size"
84 check_err $?
"Failed setting path $path to size $size"
91 devlink dev reload
"$DEVLINK_DEV" &> /dev
/null
92 check_err $?
"Failed reload"
94 still_pending
=$
(devlink resource show
"$DEVLINK_DEV" | \
96 check_err
$still_pending "Failed reload - There are still unset sizes"