Skip to content
Snippets Groups Projects
Commit a6bb1df4 authored by Alexandru Gagniuc's avatar Alexandru Gagniuc Committed by Hauke Mehrtens
Browse files

wifi-scripts: fix creation of IBSS in legacy (non-HT) mode


When an IBBS interface is configured for IBSS legacy mode, wdev.htmode
is empty. This is empty string results in an empty positional argument
to the "ibbs join" command, for example:

    iw dev phy0-ibss0 ibss join crymesh 2412 '' fixed-freq beacon-interval 100

This empty argument is interpreted as an invalid HT mode by 'iw',
causing the entire command to fail and print a "usage" message:

    daemon.notice netifd: radio0 (4527): Usage:    iw [options] \
        dev <devname> ibss join <SSID> <freq in MHz> ...

Although nobody will ever need more than 640K of IBSS, explicitly use
"NOHT" if an HT mode is not given. This fixes the problem.

Fixes: e56c5f7b276a ("hostapd: add ucode support, use ucode for the main ubus object")
Signed-off-by: default avatarAlexandru Gagniuc <mr.nuke.me@gmail.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name> [extend to cover more cases]
(cherry picked from commit cee9fcdb7350911f474544189817d25fd4070111)
parent 0f1b249e
Branches
No related tags found
1 merge request!433Merge OpenWrt tag 'v23.05.4' into devel
...@@ -32,10 +32,11 @@ function iface_start(wdev) ...@@ -32,10 +32,11 @@ function iface_start(wdev)
wdev_config.macaddr = phydev.macaddr_next(); wdev_config.macaddr = phydev.macaddr_next();
wdev_create(phy, ifname, wdev_config); wdev_create(phy, ifname, wdev_config);
wdev_set_up(ifname, true); wdev_set_up(ifname, true);
let htmode = wdev.htmode || "NOHT";
if (wdev.freq) if (wdev.freq)
system(`iw dev ${ifname} set freq ${wdev.freq} ${wdev.htmode}`); system(`iw dev ${ifname} set freq ${wdev.freq} ${htmode}`);
if (wdev.mode == "adhoc") { if (wdev.mode == "adhoc") {
let cmd = ["iw", "dev", ifname, "ibss", "join", wdev.ssid, wdev.freq, wdev.htmode, "fixed-freq" ]; let cmd = ["iw", "dev", ifname, "ibss", "join", wdev.ssid, wdev.freq, htmode, "fixed-freq" ];
if (wdev.bssid) if (wdev.bssid)
push(cmd, wdev.bssid); push(cmd, wdev.bssid);
for (let key in [ "beacon-interval", "basic-rates", "mcast-rate", "keys" ]) for (let key in [ "beacon-interval", "basic-rates", "mcast-rate", "keys" ])
...@@ -43,7 +44,7 @@ function iface_start(wdev) ...@@ -43,7 +44,7 @@ function iface_start(wdev)
push(cmd, key, wdev[key]); push(cmd, key, wdev[key]);
system(cmd); system(cmd);
} else if (wdev.mode == "mesh") { } else if (wdev.mode == "mesh") {
let cmd = [ "iw", "dev", ifname, "mesh", "join", wdev.ssid, "freq", wdev.freq, wdev.htmode ]; let cmd = [ "iw", "dev", ifname, "mesh", "join", wdev.ssid, "freq", wdev.freq, htmode ];
for (let key in [ "mcast-rate", "beacon-interval" ]) for (let key in [ "mcast-rate", "beacon-interval" ])
if (wdev[key]) if (wdev[key])
push(cmd, key, wdev[key]); push(cmd, key, wdev[key]);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment