2 # SPDX-License-Identifier: GPL-2.0
4 lib_dir=$(dirname $0)/../../../../net/forwarding
8 source devlink_lib_spectrum.sh
12 devlink_sp_read_kvd_defaults
18 devlink_sp_size_kvd_to_default
29 log_info "Running profile tests"
31 for i in $KVD_PROFILES; do
33 devlink_sp_resource_kvd_profile_set $i
34 log_test "'$i' profile"
37 # Default is explicitly tested at end to ensure it's actually applied
39 devlink_sp_resource_kvd_profile_set "default"
40 log_test "'default' profile"
49 log_info "Running KVD-minimum tests"
51 for i in $KVD_CHILDREN; do
53 size=$(devlink_resource_get kvd "$i" | jq '.["size_min"]')
54 devlink_resource_size_set "$size" kvd "$i"
56 # In case of linear, need to minimize sub-resources as well
57 if [[ "$i" == "linear" ]]; then
58 for j in $KVDL_CHILDREN; do
59 devlink_resource_size_set 0 kvd linear "$j"
64 devlink_sp_size_kvd_to_default
65 log_test "'$i' minimize [$size]"
76 log_info "Running KVD-maximum tests"
77 for i in $KVD_CHILDREN; do
79 devlink_sp_resource_minimize
81 # Calculate the maximum possible size for the given partition
82 size=$(devlink_resource_size_get kvd)
83 for j in $KVD_CHILDREN; do
84 if [ "$i" != "$j" ]; then
85 min_size=$(devlink_resource_get kvd "$j" | \
87 size=$((size - min_size))
91 # Test almost maximum size
92 devlink_resource_size_set "$((size - 128))" kvd "$i"
94 log_test "'$i' almost maximize [$((size - 128))]"
96 # Test above maximum size
97 devlink resource set "$DEVLINK_DEV" \
98 path "kvd/$i" size $((size + 128)) &> /dev/null
99 check_fail $? "Set kvd/$i to size $((size + 128)) should fail"
100 log_test "'$i' Overflow rejection [$((size + 128))]"
103 if [ "$i" == "hash_single" ] || [ "$i" == "hash_double" ]; then
104 echo "SKIP: Observed problem with exact max $i"
108 devlink_resource_size_set "$size" kvd "$i"
110 log_test "'$i' maximize [$size]"
112 devlink_sp_size_kvd_to_default