1*be00853bSPetr Machata# SPDX-License-Identifier: GPL-2.0 2*be00853bSPetr Machatasource ../rif_counter_scale.sh 3*be00853bSPetr Machata 4*be00853bSPetr Machatarif_counter_get_target() 5*be00853bSPetr Machata{ 6*be00853bSPetr Machata local should_fail=$1; shift 7*be00853bSPetr Machata local max_cnts 8*be00853bSPetr Machata local max_rifs 9*be00853bSPetr Machata local target 10*be00853bSPetr Machata 11*be00853bSPetr Machata max_rifs=$(devlink_resource_size_get rifs) 12*be00853bSPetr Machata max_cnts=$(devlink_resource_size_get counters rif) 13*be00853bSPetr Machata 14*be00853bSPetr Machata # Remove already allocated RIFs. 15*be00853bSPetr Machata ((max_rifs -= $(devlink_resource_occ_get rifs))) 16*be00853bSPetr Machata 17*be00853bSPetr Machata # 10 KVD slots per counter, ingress+egress counters per RIF 18*be00853bSPetr Machata ((max_cnts /= 20)) 19*be00853bSPetr Machata 20*be00853bSPetr Machata # Pointless to run the overflow test if we don't have enough RIFs to 21*be00853bSPetr Machata # host all the counters. 22*be00853bSPetr Machata if ((max_cnts > max_rifs && should_fail)); then 23*be00853bSPetr Machata echo 0 24*be00853bSPetr Machata return 25*be00853bSPetr Machata fi 26*be00853bSPetr Machata 27*be00853bSPetr Machata target=$((max_rifs < max_cnts ? max_rifs : max_cnts)) 28*be00853bSPetr Machata 29*be00853bSPetr Machata if ((! should_fail)); then 30*be00853bSPetr Machata echo $target 31*be00853bSPetr Machata else 32*be00853bSPetr Machata echo $((target + 1)) 33*be00853bSPetr Machata fi 34*be00853bSPetr Machata} 35