summaryrefslogtreecommitdiffhomepage
path: root/modules/admin-full/luasrc/model
diff options
context:
space:
mode:
authorStephan Günther <steph.guenther@googlemail.com>2014-09-21 20:35:20 +0200
committerJo-Philipp Wich <jow@openwrt.org>2014-10-10 01:04:28 +0200
commitda022f91576d066e063e7988b0f2a92794705465 (patch)
treee5667b978447e7de0d6b16d1b4044160ce399c06 /modules/admin-full/luasrc/model
parentd2c188278629fa51f894a836947dbac5d691a6dd (diff)
modules/admin-full: fix wifi channel selection on multiple STA networks
Besides several AP networks, I have configured two STA networks on my openwrt box - both on the same radio and thus on the same channel. This was done via LuCI. However after both STA networks were set up, I am unable to edit the channel on neither network. When editing the one STA network, LuCI tells me that the channel is locked by the other STA network. Same for the other STA network. Looks like a bug to me, so I made a patch. Signed-off-by: Stephan Günther <steph.guenther@googlemail.com>
Diffstat (limited to 'modules/admin-full/luasrc/model')
-rw-r--r--modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua26
1 files changed, 16 insertions, 10 deletions
diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua b/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua
index 7cdfb7060c..2253752f4f 100644
--- a/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua
+++ b/modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua
@@ -147,21 +147,27 @@ local hwtype = wdev:get("type")
-- NanoFoo
local nsantenna = wdev:get("antenna")
--- Check whether there is a client interface on the same radio,
--- if yes, lock the channel choice as the station will dicatate the freq
-local has_sta = nil
+-- Check whether there are client interfaces on the same radio,
+-- if yes, lock the channel choice as these stations will dicatate the freq
+local found_sta = nil
local _, net
-for _, net in ipairs(wdev:get_wifinets()) do
- if net:mode() == "sta" and net:id() ~= wnet:id() then
- has_sta = net
- break
+if wnet:mode() ~= "sta" then
+ for _, net in ipairs(wdev:get_wifinets()) do
+ if net:mode() == "sta" then
+ if not found_sta then
+ found_sta = {}
+ found_sta.channel = net:channel()
+ found_sta.names = {}
+ end
+ found_sta.names[#found_sta.names+1] = net:shortname()
+ end
end
end
-if has_sta then
+if found_sta then
ch = s:taboption("general", DummyValue, "choice", translate("Channel"))
- ch.value = translatef("Locked to channel %d used by %s",
- has_sta:channel(), has_sta:shortname())
+ ch.value = translatef("Locked to channel %d used by: %s",
+ found_sta.channel, table.concat(found_sta.names, ", "))
else
ch = s:taboption("general", Value, "channel", translate("Channel"))
ch:value("auto", translate("auto"))