Compare commits

...

1 Commits

Author SHA1 Message Date
Subramanian C
cecd0a02be qosmngr: Handle scheduler section on qos uci 2023-01-20 10:01:42 +05:30

View File

@@ -112,6 +112,11 @@ handle_queue() {
config_get bs "$qid" "burst_size"
config_get qsize "$qid" "queue_size" 1024
# no need to configure if scheduling alg configured as different
if [ -z "$sc_alg" ] || [ -z "$6" ] || ! [ "$sc_alg" == "$6" ];then
return
fi
[ "$rate" == "0" ] && rate="$port_bw"
[ "$bs" == "0" ] && bs="$port_bs"
@@ -594,7 +599,8 @@ get_link_rate() {
configure_queue() {
qdisc_idx=0
local bs=1500
local rate=0
local rate=0, sc_rate=0, sh_rate=0
local sc_salg="SP"
# Load UCI file
config_load qos
config_foreach handle_q_order queue
@@ -617,18 +623,45 @@ configure_queue() {
return
fi
config_get rate "$sid" "rate"
config_get sh_rate "$sid" "rate"
# Convert the rate from bps to kbps.
if [ $rate -lt 1000 ];then
if [ $sh_rate -lt 1000 ];then
return
fi
rate=$(( rate / 1000 ))
sh_rate=$(( sh_rate / 1000 ))
config_get b_size "$sid" "burst_size"
if [ "$b_size" == "0" ]; then
bs="$b_size"
fi
}
get_intf_scheduler_config() {
scid="$1" #scheduler section ID
config_get is_enable "$scid" "enable"
# no need to configure disabled scheduler
if [ "$is_enable" == "0" ]; then
return
fi
config_get ifname "$scid" "ifname"
# if ifname is empty that is good enough to break
if [ -z "$ifname" ] || ! [ "$ifname" == "$2" ];then
return
fi
config_get sc_rate "$scid" "rate"
# Convert the rate from bps to kbps.
if [ $sc_rate -lt 1000 ];then
return
fi
sc_rate=$(( sc_rate / 1000 ))
config_get sc_salg "$scid" "scheduling"
}
local wanport="$(db -q get hw.board.ethernetWanPort)"
for interf in $(db -q get hw.board.ethernetPortOrder); do
Q_COUNT=0
@@ -642,6 +675,18 @@ configure_queue() {
link_rate=$(get_link_rate "$interf")
# Read the shaper configuration for interface
config_foreach get_intf_shaper_config shaper $interf
# Read the scheduler configuration for interface
config_foreach get_intf_scheduler_config scheduler $interf
# take effect rate value which higher on scheduler/shaper
if [ "$sh_rate" -le "$sc_rate" ]; then
rate=$sc_rate
else
rate=$sh_rate
fi
#assign link rate if rate not configured
if [ "$rate" == "0" ]; then
rate=$(( link_rate * 1000 ))
fi
@@ -655,7 +700,7 @@ configure_queue() {
MAJOR="$qdisc_idx"
fi
config_foreach handle_queue queue $interf $rate $qdisc_idx $bs
config_foreach handle_queue queue $interf $rate $qdisc_idx $bs $sc_salg
done
}