[luci] [PATCH] modules/admin-full: fix wifi channel selection on multiple STA networks

Stephan Günther steph.guenther at gmail.com
Thu Oct 9 02:13:08 CEST 2014


From: Stephan Günther <steph.guenther at googlemail.com>

---
 .../luasrc/model/cbi/admin_network/wifi.lua        | 26 +++++++++++++---------
 1 file 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 7cdfb70..2253752 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"))
-- 
1.9.3



More information about the luci mailing list