brintos

brintos / linux-shallow public Read only

0
0
Text · 2.8 KiB · 06a80f4 Raw
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