iopsys-feed/qosmngr/files/airoha/lib/qos/queue.sh
2023-04-20 05:36:26 +00:00

50 lines
1.2 KiB
Bash
Executable file

#!/bin/sh
# Handle queues and their order
Q_COUNT=0
# Preliminary configuration of a queue
pre_configure_queue() {
# Delete queues
hw_queue_init_all
for intf in $(db get hw.board.ethernetPortOrder); do
hw_intf_init "${intf}"
done
}
# UCI queue section handler
handle_queue() {
local qid="$1" #queue section ID
local intf_name="$2"
config_get is_enable "$qid" "enable" 1
# no need to configure disabled queues
if [ "${is_enable}" == "0" ]; then
return
fi
config_get ifname "$qid" "ifname"
# if ifname is empty that is good enough to break
if [ -z "$ifname" ];then
return
fi
config_get sc_alg "$qid" "scheduling"
config_get wgt "$qid" "weight" 1
config_get rate "$qid" "rate"
config_get bs "$qid" "burst_size"
config_get qsize "$qid" "queue_size" 1024
config_get precedence "$qid" "precedence"
hw_queue_set "${ifname}" "${Q_COUNT}" "${precedence}" "$qsize" "$wgt" "$sc_alg" "$shapingrate" "$rate" "$bs"
Q_COUNT=$((Q_COUNT + 1))
}
# Configure all queues specified in UCI tree 'qos.queue'
configure_queue() {
# Load UCI file
config_load qos
config_foreach handle_queue queue
}