mirror of
https://github.com/qosmio/nss-packages.git
synced 2025-12-16 16:21:53 +00:00
nss-ecm: switch to using named sections in uci
The way ECM uci config is handled is pretty ugly due to it not specifying a
named section for 'general'.
Current:
```
➤ uci show ecm
ecm.global=ecm
ecm.global.acceleration_engine='nss'
ecm.@general[0]=general
ecm.@general[0].enable_bridge_filtering='0'
ecm.@general[0].disable_offloads='0'
ecm.@general[0].disable_flow_control='0'
ecm.@general[0].disable_interrupt_moderation='0'
ecm.@general[0].disable_gro='0'
```
None of the options require the use of unnamed sections
(like /etc/config/dhcp does when defining configs for multiple hosts)
With this change the config would produce:
```
ecm.global=ecm
ecm.global.acceleration_engine='nss'
ecm.general=ecm
ecm.general.enable_bridge_filtering='0'
ecm.general.disable_offloads='0'
ecm.general.disable_flow_control='0'
ecm.general.disable_interrupt_moderation='0'
ecm.general.disable_gro='0'
```
Which is a lot easier to read, and access programmatically.
We can also merge `global` and `general` into a single section as it
doesn't really make sense why we need global/general when it's
technically "ALL" globally applied.
For now, to ease users on the change, let's just stick to 2 sections.
**PLEASE NOTE: For users building their own images, and storing their**
**configs in 'files/etc/config/ecm' you will need to manually update the**
**config before compiling.**
For users using **sysupgrade** or installing without custom config at build
time 'files/etc/config/ecm' should be OK.
The following can be run manually on the config file 'ecm'
```sh
conf=/etc/config/ecm
uci -q show ecm.general || {
echo "Converting 'ECM' config to new format."
sed -i "s/config.*general.*/config ecm 'general'/g" "$conf"
}
```
Signed-off-by: Sean Khan <datapronix@protonmail.com>
This commit is contained in:
parent
3ffec2d091
commit
1891a290e0
@ -1,7 +1,7 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=qca-nss-ecm
|
PKG_NAME:=qca-nss-ecm
|
||||||
PKG_RELEASE:=4
|
PKG_RELEASE:=5
|
||||||
|
|
||||||
PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/qca-nss-ecm.git
|
PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/qca-nss-ecm.git
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# shellcheck disable=3014
|
# shellcheck disable=3014,3043,2086,1091,2154
|
||||||
#
|
#
|
||||||
# Helper script which uses ethtool to disable (most)
|
# Helper script which uses ethtool to disable (most)
|
||||||
# interface offloads, if possible.
|
# interface offloads, if possible.
|
||||||
@ -172,19 +172,14 @@ disable_interrupt_moderation() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
parse_opt() {
|
|
||||||
local cfg="$1"
|
|
||||||
|
|
||||||
config_get_bool enable_bridge_filtering "$cfg" enable_bridge_filtering 0
|
|
||||||
config_get_bool disable_offloads "$cfg" disable_offloads 0
|
|
||||||
config_get_bool disable_flow_control "$cfg" disable_flow_control 0
|
|
||||||
config_get_bool disable_interrupt_moderation "$cfg" disable_interrupt_moderation 0
|
|
||||||
config_get_bool disable_gro "$cfg" disable_gro 0
|
|
||||||
}
|
|
||||||
|
|
||||||
disable_offload() {
|
disable_offload() {
|
||||||
config_load ecm
|
config_load ecm
|
||||||
config_foreach parse_opt general
|
|
||||||
|
config_get_bool enable_bridge_filtering ecm enable_bridge_filtering 0
|
||||||
|
config_get_bool disable_offloads ecm disable_offloads 0
|
||||||
|
config_get_bool disable_flow_control ecm disable_flow_control 0
|
||||||
|
config_get_bool disable_interrupt_moderation ecm disable_interrupt_moderation 0
|
||||||
|
config_get_bool disable_gro ecm disable_gro 0
|
||||||
|
|
||||||
[ -z $1 ] && interface=$(echo /sys/class/net/*) || interface=$*
|
[ -z $1 ] && interface=$(echo /sys/class/net/*) || interface=$*
|
||||||
|
|
||||||
|
|||||||
@ -1,19 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
|
||||||
# Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
|
# convert old ecm config to new format
|
||||||
#
|
uci -q show ecm.general || {
|
||||||
# Permission to use, copy, modify, and/or distribute this software for any
|
echo "Converting 'ECM' config to new format."
|
||||||
# purpose with or without fee is hereby granted, provided that the above
|
sed -i "s/config.*general.*/config ecm 'general'/g" /etc/config/ecm
|
||||||
# copyright notice and this permission notice appear in all copies.
|
}
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
#
|
|
||||||
|
|
||||||
uci -q batch << EOF
|
uci -q batch << EOF
|
||||||
delete firewall.qcanssecm
|
delete firewall.qcanssecm
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
#!/bin/sh /etc/rc.common
|
||||||
|
# shellcheck disable=3043,3060,2086,2034
|
||||||
#
|
#
|
||||||
# Copyright (c) 2014, 2019-2020 The Linux Foundation. All rights reserved.
|
# Copyright (c) 2014, 2019-2020 The Linux Foundation. All rights reserved.
|
||||||
#
|
#
|
||||||
@ -22,9 +23,11 @@ START=26
|
|||||||
|
|
||||||
sysctl_update() {
|
sysctl_update() {
|
||||||
local name value file
|
local name value file
|
||||||
|
|
||||||
name=${1//\//\\/}
|
name=${1//\//\\/}
|
||||||
value=${2//\//\\/}
|
value=${2//\//\\/}
|
||||||
file=${3:-/etc/sysctl.d/qca-nss-ecm.conf}
|
file=${3:-/etc/sysctl.d/qca-nss-ecm.conf}
|
||||||
|
|
||||||
sed -i -e '/^#\?\(\s*'"${name}"'\s*=\s*\).*/{s//\1'"${value}"'/;:a;n;ba;q}' \
|
sed -i -e '/^#\?\(\s*'"${name}"'\s*=\s*\).*/{s//\1'"${value}"'/;:a;n;ba;q}' \
|
||||||
-e '$a'"${name}"'='"${value}" "${file}"
|
-e '$a'"${name}"'='"${value}" "${file}"
|
||||||
sysctl -w ${name}=${value}
|
sysctl -w ${name}=${value}
|
||||||
@ -32,8 +35,10 @@ sysctl_update() {
|
|||||||
|
|
||||||
get_front_end_mode() {
|
get_front_end_mode() {
|
||||||
config_load "ecm"
|
config_load "ecm"
|
||||||
|
|
||||||
config_get front_end global acceleration_engine "auto"
|
config_get front_end global acceleration_engine "auto"
|
||||||
|
|
||||||
|
# shellcheck disable=2154
|
||||||
case $front_end in
|
case $front_end in
|
||||||
auto)
|
auto)
|
||||||
echo '0'
|
echo '0'
|
||||||
@ -75,6 +80,7 @@ load_ecm() {
|
|||||||
echo 1 > /sys/kernel/debug/ecm/ecm_classifier_default/accel_delay_pkts
|
echo 1 > /sys/kernel/debug/ecm/ecm_classifier_default/accel_delay_pkts
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# shellcheck disable=1091
|
||||||
. /lib/netifd/offload/disable_offloads.sh
|
. /lib/netifd/offload/disable_offloads.sh
|
||||||
|
|
||||||
disable_offload
|
disable_offload
|
||||||
@ -119,12 +125,6 @@ unload_ecm() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
parse_opt() {
|
|
||||||
local cfg="$1"
|
|
||||||
|
|
||||||
config_get_bool enable_bridge_filtering "$cfg" enable_bridge_filtering 0
|
|
||||||
}
|
|
||||||
|
|
||||||
start() {
|
start() {
|
||||||
load_ecm
|
load_ecm
|
||||||
|
|
||||||
@ -133,8 +133,9 @@ start() {
|
|||||||
|
|
||||||
# If bridge filtering is enabled, apply and persist the sysctl flags
|
# If bridge filtering is enabled, apply and persist the sysctl flags
|
||||||
config_load ecm
|
config_load ecm
|
||||||
config_foreach parse_opt general
|
config_get enable_bridge_filtering general enable_bridge_filtering "0"
|
||||||
|
|
||||||
|
# shellcheck disable=2154
|
||||||
if [ "$enable_bridge_filtering" -eq 1 ]; then
|
if [ "$enable_bridge_filtering" -eq 1 ]; then
|
||||||
echo "Bridge filtering is enabled in the ECM config, this will cause issues with NAT loopback!"
|
echo "Bridge filtering is enabled in the ECM config, this will cause issues with NAT loopback!"
|
||||||
enable_bridge_filtering
|
enable_bridge_filtering
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
config ecm 'global'
|
config ecm 'global'
|
||||||
option acceleration_engine 'auto'
|
option acceleration_engine 'auto'
|
||||||
|
|
||||||
config general
|
config ecm 'general'
|
||||||
option enable_bridge_filtering '0'
|
option enable_bridge_filtering '0'
|
||||||
option disable_offloads '0'
|
option disable_offloads '0'
|
||||||
option disable_flow_control '0'
|
option disable_flow_control '0'
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user