From 183bef4a8b461078f8fb352030d1982e8f035413 Mon Sep 17 00:00:00 2001 From: Ycarus Date: Tue, 17 Apr 2018 09:27:15 +0200 Subject: [PATCH] Add cpu scale frequency configuration --- .../luasrc/controller/openmptcprouter.lua | 24 +++++++++++++ .../luasrc/view/openmptcprouter/settings.htm | 34 +++++++++++++++++++ .../root/etc/init.d/openmptcprouter | 27 +++++++++++++++ .../root/etc/uci-defaults/openmptcprouter | 7 ++++ 4 files changed, 92 insertions(+) create mode 100755 luci-app-openmptcprouter/root/etc/init.d/openmptcprouter create mode 100755 luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 6c7eb5ee1..b2a3df22f 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -78,6 +78,30 @@ function settings_add() ucic:save("firewall") ucic:commit("firewall") + -- Set CPU scaling minimum frequency + local scaling_min_freq = luci.http.formvalue("scaling_min_freq") or "" + if scaling_min_freq ~= "" then + ucic:set("openmptcprouter","settings","scaling_min_freq",scaling_min_freq) + ucic:save("openmptcprouter") + ucic:commit("openmptcprouter") + end + + -- Set CPU scaling maximum frequency + local scaling_max_freq = luci.http.formvalue("scaling_max_freq") or "" + if scaling_max_freq ~= "" then + ucic:set("openmptcprouter","settings","scaling_max_freq",scaling_max_freq) + ucic:save("openmptcprouter") + ucic:commit("openmptcprouter") + end + + -- Set CPU governor + local scaling_governor = luci.http.formvalue("scaling_governor") or "" + if scaling_governor ~= "" then + ucic:set("openmptcprouter","settings","scaling_governor",scaling_governor) + ucic:save("openmptcprouter") + ucic:commit("openmptcprouter") + end + -- Done, redirect luci.http.redirect(luci.dispatcher.build_url("admin/system/openmptcprouter/settings")) return diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm index 3899a8558..2be7a001c 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm @@ -20,6 +20,40 @@ + <% if nixio.fs.access("/sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq") then %> +
+ <%:Systems settings%> +
+
+ +
+ "> +
+
+
+ +
+ "> +
+
+
+ +
+ +
+
+
+ <% end %>
diff --git a/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter new file mode 100755 index 000000000..1ae29374c --- /dev/null +++ b/luci-app-openmptcprouter/root/etc/init.d/openmptcprouter @@ -0,0 +1,27 @@ +#!/bin/sh /etc/rc.common + +START=5 + +USE_PROCD=1 + +start_service() { + local scaling_min_freq scaling_max_freq + config_load openmptcprouter + config_get scaling_min_freq settings scaling_min_freq + [ -n "$scaling_min_freq" ] && { + echo $scaling_min_freq > /sys/devices/system/cpu/cpufreq/policy*/scaling_min_freq + } + config_get scaling_max_freq settings scaling_max_freq + [ -n "$scaling_max_freq" ] && { + echo $scaling_max_freq > /sys/devices/system/cpu/cpufreq/policy*/scaling_max_freq + } + config_get scaling_governor settings scaling_governor + [ -n "$scaling_governor" ] && { + echo $scaling_governor > /sys/devices/system/cpu/cpufreq/policy*/scaling_governor + } +} + +reload_service() { + rc_procd start_service + return 0 +} \ No newline at end of file diff --git a/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter b/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter new file mode 100755 index 000000000..4d6f95f9d --- /dev/null +++ b/luci-app-openmptcprouter/root/etc/uci-defaults/openmptcprouter @@ -0,0 +1,7 @@ +#!/bin/sh +uci -q batch <<-EOF + delete ucitrack.@openmptcprouter[-1] + add ucitrack openmptcprouter + set ucitrack.@openmptcprouter[-1].init=openmptcprouter + commit ucitrack +EOF \ No newline at end of file