mirror of
https://github.com/breeze303/nss-packages.git
synced 2025-12-16 16:57:29 +00:00
nss-drv: add skb_recycler init script
This script is meant to set various skb_recycler settings. There is a similar version in QSDK, but it's packaged in the main repo, rather than an external package like 'qca-nss-drv'. To avoid making too many changes in the main repo, introduce this script in `qca-nss-drv`. This script will read the following config: /etc/config/skb_recycler ``` config skb_recycler 'opt' option max_skbs '1024' option max_spare_skbs '256' option enable '1' ``` Users are encouraged to experiment disabling `skb_recycler` to see if memory leaks are still occuring, especially on 512M boards. There are issues currently where skb_recycler corrupts skbs during times of high traffic, but there wasn't a way to completely disable it. Signed-off-by: Sean Khan <datapronix@protonmail.com>
This commit is contained in:
parent
4490b7a4a7
commit
217a4fa43b
@ -1,7 +1,7 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=qca-nss-drv
|
PKG_NAME:=qca-nss-drv
|
||||||
PKG_RELEASE:=10
|
PKG_RELEASE:=11
|
||||||
|
|
||||||
PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/nss-drv.git
|
PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/nss-drv.git
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
@ -97,6 +97,7 @@ define KernelPackage/qca-nss-drv/install
|
|||||||
$(INSTALL_DIR) $(1)/etc/hotplug.d/firmware
|
$(INSTALL_DIR) $(1)/etc/hotplug.d/firmware
|
||||||
$(INSTALL_DIR) $(1)/usr/bin
|
$(INSTALL_DIR) $(1)/usr/bin
|
||||||
|
|
||||||
|
$(INSTALL_BIN) ./files/skb_recycler.init $(1)/etc/init.d/skb_recycler
|
||||||
$(INSTALL_BIN) ./files/qca-nss-drv.init $(1)/etc/init.d/qca-nss-drv
|
$(INSTALL_BIN) ./files/qca-nss-drv.init $(1)/etc/init.d/qca-nss-drv
|
||||||
$(INSTALL_DATA) ./files/qca-nss-drv.uci $(1)/etc/config/nss
|
$(INSTALL_DATA) ./files/qca-nss-drv.uci $(1)/etc/config/nss
|
||||||
$(INSTALL_DATA) ./files/qca-nss-drv.hotplug $(1)/etc/hotplug.d/firmware/10-qca-nss-fw
|
$(INSTALL_DATA) ./files/qca-nss-drv.hotplug $(1)/etc/hotplug.d/firmware/10-qca-nss-fw
|
||||||
@ -106,6 +107,7 @@ endef
|
|||||||
|
|
||||||
define KernelPackage/qca-nss-drv/conffiles
|
define KernelPackage/qca-nss-drv/conffiles
|
||||||
/etc/config/nss
|
/etc/config/nss
|
||||||
|
/etc/config/skb_recycler
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define KernelPackage/qca-nss-drv/Description
|
define KernelPackage/qca-nss-drv/Description
|
||||||
|
|||||||
92
qca-nss-drv/files/skb_recycler.init
Normal file
92
qca-nss-drv/files/skb_recycler.init
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
# shellcheck disable=3043
|
||||||
|
|
||||||
|
START=40
|
||||||
|
USE_PROCD=1
|
||||||
|
NAME=skb_recycler
|
||||||
|
|
||||||
|
ucidef_set_skb_recycler() {
|
||||||
|
uci import << EOF
|
||||||
|
package $NAME
|
||||||
|
config $NAME 'opt'
|
||||||
|
EOF
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
skb_recycler_config() {
|
||||||
|
|
||||||
|
. /lib/config/uci.sh
|
||||||
|
|
||||||
|
local CFG
|
||||||
|
local max_skbs
|
||||||
|
local max_spare_skbs
|
||||||
|
local enable
|
||||||
|
local memtotal
|
||||||
|
CFG="$1"
|
||||||
|
|
||||||
|
config_get max_skbs "${CFG}" max_skbs
|
||||||
|
config_get max_spare_skbs "${CFG}" max_spare_skbs
|
||||||
|
config_get enable "${CFG}" enable
|
||||||
|
|
||||||
|
memtotal=$(awk '/MemTotal/{print $2}' /proc/meminfo)
|
||||||
|
|
||||||
|
[ -z "$max_skbs" ] && {
|
||||||
|
[ $memtotal -le 512000 ] && max_skbs=512 || max_skbs=1024
|
||||||
|
uci_set $NAME "${CFG}" max_skbs "$max_skbs"
|
||||||
|
uci_commit "$NAME"
|
||||||
|
}
|
||||||
|
|
||||||
|
[ -z "$max_spare_skbs" ] && {
|
||||||
|
[ $memtotal -le 512000 ] && max_spare_skbs=128 || max_spare_skbs=256
|
||||||
|
uci_set $NAME "${CFG}" max_spare_skbs "$max_spare_skbs"
|
||||||
|
uci_commit "$NAME"
|
||||||
|
}
|
||||||
|
|
||||||
|
[ -z "$enable" ] && {
|
||||||
|
[ $memtotal -le 256000 ] && enable=0 || enable=1
|
||||||
|
uci_set $NAME "${CFG}" enable "$enable"
|
||||||
|
uci_commit "$NAME"
|
||||||
|
}
|
||||||
|
|
||||||
|
[ "$enable" -eq 0 ] && enable_disable="Disabling" || enable_disable="Enabling"
|
||||||
|
|
||||||
|
if [ -r "/proc/net/$NAME/skb_recycler_enable" ]; then
|
||||||
|
logger -t "$NAME" -p user.notice "$enable_disable $NAME"
|
||||||
|
echo "$enable" > /proc/net/$NAME/skb_recycler_enable
|
||||||
|
else
|
||||||
|
if [ "$enable" -eq 0 ]; then
|
||||||
|
logger -t "$NAME" -p user.warn "$NAME kernel feature 'skb_recycler_enable' not available"
|
||||||
|
logger -t "$NAME" -p user.notice "$enable_disable $NAME"
|
||||||
|
echo 1 > /proc/net/$NAME/max_skbs
|
||||||
|
echo 1 > /proc/net/$NAME/max_spare_skbs
|
||||||
|
echo 1 > /proc/net/$NAME/flush
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
logger -t "$NAME" -p user.notice "Setting max_skbs to $max_skbs"
|
||||||
|
echo "$max_skbs" > /proc/net/$NAME/max_skbs
|
||||||
|
|
||||||
|
logger -t "$NAME" -p user.notice "Setting max_spare_skbs to $max_spare_skbs"
|
||||||
|
echo "$max_spare_skbs" > /proc/net/$NAME/max_spare_skbs
|
||||||
|
|
||||||
|
[ "$enable" -eq 0 ] && echo 1 > /proc/net/$NAME/flush
|
||||||
|
}
|
||||||
|
|
||||||
|
check_config() {
|
||||||
|
config_load "$NAME" || {
|
||||||
|
touch /etc/config/$NAME
|
||||||
|
ucidef_set_skb_recycler
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
reload_service() {
|
||||||
|
[ ! -r /proc/net/$NAME ] && logger -t "$NAME" -p user.warn "skb_recycler feature not available" && return
|
||||||
|
|
||||||
|
check_config
|
||||||
|
config_load $NAME
|
||||||
|
config_foreach skb_recycler_config $NAME
|
||||||
|
}
|
||||||
|
|
||||||
|
start_service() {
|
||||||
|
reload_service
|
||||||
|
}
|
||||||
6
qca-nss-drv/files/skb_recycler.uci
Normal file
6
qca-nss-drv/files/skb_recycler.uci
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
config skb_recycler 'opt'
|
||||||
|
option max_skbs '1024'
|
||||||
|
option max_spare_skbs '512'
|
||||||
|
option enable '0'
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user