wifi-scripts: wdev.uc: fix mesh mode frequency handling
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run

Mesh mode interface creation fails when the freq parameter is empty or
undefined. Unlike adhoc mode which checks if freq exists before using it,
mesh mode blindly constructs the iw command with freq parameter, resulting
in invalid syntax like:

  iw dev mesh0 mesh join ssid freq  NOHT

This causes the mesh interface to be created without joining the mesh
network, leaving it in a DOWN state with no channel assigned.

Fix by adding freq validation check similar to adhoc mode.

Tested on two routers in parallel as mesh peers:
- Xiaomi AX3000T (MediaTek MT7981)
- OpenWrt One (MediaTek MT7981)
- OpenWrt 6.6.119, 802.11s mesh on 5GHz (Channel 36, HE80)

Signed-off-by: Valent Turkovic <valent@meshpointone.com>
Link: https://github.com/openwrt/openwrt/pull/21373
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 7214acd759)
This commit is contained in:
Valent Turkovic 2026-01-03 09:50:16 +01:00 committed by Hauke Mehrtens
parent c0b24e2a9f
commit b52a3124db

View file

@ -44,7 +44,12 @@ function iface_start(wdev)
push(cmd, key, wdev[key]);
system(cmd);
} else if (wdev.mode == "mesh") {
let cmd = [ "iw", "dev", ifname, "mesh", "join", wdev.ssid, "freq", wdev.freq, htmode ];
let cmd = [ "iw", "dev", ifname, "mesh", "join", wdev.ssid ];
if (wdev.freq) {
push(cmd, "freq", wdev.freq);
if (htmode && htmode != "NOHT")
push(cmd, htmode);
}
for (let key in [ "basic-rates", "mcast-rate", "beacon-interval" ])
if (wdev[key])
push(cmd, key, wdev[key]);