mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2025-12-10 07:44:50 +01:00
qosmngr: support percentage ShapingRate
This commit is contained in:
parent
6d6962e02e
commit
2e9942589a
3 changed files with 73 additions and 10 deletions
|
|
@ -6,13 +6,13 @@ include $(TOPDIR)/rules.mk
|
|||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=qosmngr
|
||||
PKG_VERSION:=1.0.17
|
||||
PKG_VERSION:=1.0.18
|
||||
|
||||
LOCAL_DEV:=0
|
||||
ifneq ($(LOCAL_DEV),1)
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_VERSION:=c723a2c999bb982030df2a47a69f356bfafa0af7
|
||||
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/qosmngr.git
|
||||
PKG_SOURCE_VERSION:=19c4b31eefe45bbbee2ba53f5394b5e32691451e
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||
PKG_MIRROR_HASH:=skip
|
||||
endif
|
||||
|
|
@ -41,7 +41,7 @@ TARGET_CFLAGS += -DBBF_VENDOR_PREFIX=\\\"$(CONFIG_BBF_VENDOR_PREFIX)\\\"
|
|||
|
||||
ifeq ($(LOCAL_DEV),1)
|
||||
define Build/Prepare
|
||||
$(CP) -rf ./qosmngr/* $(PKG_BUILD_DIR)/
|
||||
$(CP) -rf ~/git/qosmngr/* $(PKG_BUILD_DIR)/
|
||||
endef
|
||||
endif
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,22 @@
|
|||
#!/bin/sh
|
||||
# Common shaper library
|
||||
|
||||
get_max_linkspeed() {
|
||||
local ifname="$1"
|
||||
local modes="10000 5000 2500 1000 100 10"
|
||||
local speed=""
|
||||
local phycap="$(ethtool $ifname | sed -ne '/Supported link modes:/,/:/p' | sed -e 's/.*://' -e 's/^[[:space:]]*//' -e '$d')"
|
||||
|
||||
for i in $modes; do
|
||||
if echo "${phycap}" | grep -qe "$i\\D"; then
|
||||
speed=$i
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
echo "$speed"
|
||||
}
|
||||
|
||||
# UCI 'shaper' section handler.
|
||||
# It will verify shaper configuration sanity and then invoke
|
||||
# hardware-specific functions
|
||||
|
|
@ -13,7 +29,6 @@ handle_shaper() {
|
|||
return
|
||||
fi
|
||||
|
||||
|
||||
config_get ifname "$sid" "ifname"
|
||||
# if ifname is empty that is good enough to break
|
||||
if [ -z "$ifname" ] ; then
|
||||
|
|
@ -21,12 +36,28 @@ handle_shaper() {
|
|||
fi
|
||||
|
||||
config_get rate "$sid" "rate"
|
||||
# Convert the rate from bps to kbps.
|
||||
if [ -z "${rate}" ] || [ "${rate}" -lt 1000 ] ; then
|
||||
if [ -z "${rate}" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
rate=$((rate / 1000))
|
||||
if [ "${rate}" -eq -1 ]; then
|
||||
# No shaping
|
||||
return
|
||||
fi
|
||||
|
||||
# Convert the rate from bps to kbps.
|
||||
if [ "${rate}" -ge 0 -a "${rate}" -le 100 ] ; then
|
||||
# Set as per percentage
|
||||
speed=$(get_max_linkspeed "$ifname")
|
||||
if [ -z "${speed}" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
rate=$((speed * rate * 1000 / 100))
|
||||
else
|
||||
rate=$((rate / 1000))
|
||||
fi
|
||||
|
||||
config_get bs "$sid" "burst_size"
|
||||
|
||||
if [ "${bs}" -ge 1000 ] ; then
|
||||
|
|
|
|||
|
|
@ -15,6 +15,22 @@ SP_Q_PRIO=7
|
|||
cfg_name=""
|
||||
cfg_type=""
|
||||
|
||||
get_max_linkspeed() {
|
||||
local ifname="$1"
|
||||
local modes="10000 5000 2500 1000 100 10"
|
||||
local speed=""
|
||||
local phycap="$(ethtool $ifname | sed -ne '/Supported link modes:/,/:/p' | sed -e 's/.*://' -e 's/^[[:space:]]*//' -e '$d')"
|
||||
|
||||
for i in $modes; do
|
||||
if echo "${phycap}" | grep -qe "$i\\D"; then
|
||||
speed=$i
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
echo "$speed"
|
||||
}
|
||||
|
||||
get_port_number() {
|
||||
[ -z "$1" ] && return
|
||||
local ports="0 1 2 3 4 5 6 7 8"
|
||||
|
|
@ -328,12 +344,28 @@ handle_shaper() {
|
|||
fi
|
||||
|
||||
config_get rate "$sid" "rate"
|
||||
# Convert the rate from bps to kbps.
|
||||
if [ $rate -lt 1000 ];then
|
||||
if [ -z "${rate}" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
rate=$(($rate / 1000))
|
||||
if [ "${rate}" -eq -1 ]; then
|
||||
#No shaping
|
||||
return
|
||||
fi
|
||||
|
||||
# Convert the rate from bps to kbps.
|
||||
if [ "${rate}" -ge 0 -a "${rate}" -le 100 ];then
|
||||
# set as per percentage
|
||||
speed=$(get_max_linkspeed "$ifname")
|
||||
if [ -z "${speed}" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
rate=$((speed * rate * 1000 / 100))
|
||||
else
|
||||
rate=$(($rate / 1000))
|
||||
fi
|
||||
|
||||
config_get bs "$sid" "burst_size"
|
||||
tmctl setportshaper --devtype 0 --if $ifname --shapingrate $rate --burstsize $bs
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue