118 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4source "../../../../net/forwarding/devlink_lib.sh"5source ../mlxsw_lib.sh6 7mlxsw_only_on_spectrum 1 || exit 18 9# Needed for returning to default10declare -A KVD_DEFAULTS11 12KVD_CHILDREN="linear hash_single hash_double"13KVDL_CHILDREN="singles chunks large_chunks"14 15devlink_sp_resource_minimize()16{17 local size18 local i19 20 for i in $KVD_CHILDREN; do21 size=$(devlink_resource_get kvd "$i" | jq '.["size_min"]')22 devlink_resource_size_set "$size" kvd "$i"23 done24 25 for i in $KVDL_CHILDREN; do26 size=$(devlink_resource_get kvd linear "$i" | \27 jq '.["size_min"]')28 devlink_resource_size_set "$size" kvd linear "$i"29 done30}31 32devlink_sp_size_kvd_to_default()33{34 local need_reload=035 local i36 37 for i in $KVD_CHILDREN; do38 local size=$(echo "${KVD_DEFAULTS[kvd_$i]}" | jq '.["size"]')39 current_size=$(devlink_resource_size_get kvd "$i")40 41 if [ "$size" -ne "$current_size" ]; then42 devlink_resource_size_set "$size" kvd "$i"43 need_reload=144 fi45 done46 47 for i in $KVDL_CHILDREN; do48 local size=$(echo "${KVD_DEFAULTS[kvd_linear_$i]}" | \49 jq '.["size"]')50 current_size=$(devlink_resource_size_get kvd linear "$i")51 52 if [ "$size" -ne "$current_size" ]; then53 devlink_resource_size_set "$size" kvd linear "$i"54 need_reload=155 fi56 done57 58 if [ "$need_reload" -ne "0" ]; then59 devlink_reload60 fi61}62 63devlink_sp_read_kvd_defaults()64{65 local key66 local i67 68 KVD_DEFAULTS[kvd]=$(devlink_resource_get "kvd")69 for i in $KVD_CHILDREN; do70 key=kvd_$i71 KVD_DEFAULTS[$key]=$(devlink_resource_get kvd "$i")72 done73 74 for i in $KVDL_CHILDREN; do75 key=kvd_linear_$i76 KVD_DEFAULTS[$key]=$(devlink_resource_get kvd linear "$i")77 done78}79 80KVD_PROFILES="default scale ipv4_max"81 82devlink_sp_resource_kvd_profile_set()83{84 local profile=$185 86 case "$profile" in87 scale)88 devlink_resource_size_set 64000 kvd linear89 devlink_resource_size_set 15616 kvd linear singles90 devlink_resource_size_set 32000 kvd linear chunks91 devlink_resource_size_set 16384 kvd linear large_chunks92 devlink_resource_size_set 128000 kvd hash_single93 devlink_resource_size_set 48000 kvd hash_double94 devlink_reload95 ;;96 ipv4_max)97 devlink_resource_size_set 64000 kvd linear98 devlink_resource_size_set 15616 kvd linear singles99 devlink_resource_size_set 32000 kvd linear chunks100 devlink_resource_size_set 16384 kvd linear large_chunks101 devlink_resource_size_set 144000 kvd hash_single102 devlink_resource_size_set 32768 kvd hash_double103 devlink_reload104 ;;105 default)106 devlink_resource_size_set 98304 kvd linear107 devlink_resource_size_set 16384 kvd linear singles108 devlink_resource_size_set 49152 kvd linear chunks109 devlink_resource_size_set 32768 kvd linear large_chunks110 devlink_resource_size_set 87040 kvd hash_single111 devlink_resource_size_set 60416 kvd hash_double112 devlink_reload113 ;;114 *)115 check_err 1 "Unknown profile $profile"116 esac117}118