1
0
Fork 0
forked from mirror/openwrt
Commit graph

110 commits

Author SHA1 Message Date
Felix Fietkau
9736d42141 wifi-scripts: ucode: add support for scan_list
Speed up connecting in client mode by allowing to limit the channels that
need to be scanned.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-15 19:41:48 +02:00
Felix Fietkau
4b6d81d7c1 wifi-scripts: ucode: remove reference to legacy drivers
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-15 19:31:28 +02:00
Felix Fietkau
45360a5aea wifi-scripts: ucode: add extra RSN override for MLO
Use SAE-EXT-KEY instead of SAE for MLO clients

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-15 11:12:38 +02:00
Tobias Waldvogel
2282377841 wifi-scripts: Avoid syslog message variable data does not exist
Initialize data to {} if null before calling mac80211.sh
to avoid a confusing error message in the syslog.

Fixes: https://github.com/openwrt/openwrt/issues/14010
Signed-off-by: Tobias Waldvogel <tobias.waldvogel@gmail.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name> [cosmetic change]
2025-08-14 20:40:31 +02:00
Felix Fietkau
6ae4115746 wifi-scripts: ucode: fix setting supported/basic rates in config
Only set the default based on cell density, do not override.

Fixes: https://github.com/openwrt/openwrt/issues/19673
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-14 18:24:32 +02:00
Tobias Waldvogel
98435a37a7 wifi-scripts: iface should be optional in wifi-vlan definition
The option iface should be optional according to the description
of /etc/config/wireless in order to avoid repeating the definition
for each virtual interface.

Signed-off-by: Tobias Waldvogel <tobias.waldvogel@gmail.com>
2025-08-14 17:28:33 +02:00
Felix Fietkau
d223d29feb wifi-scripts: ucode: get the phy capabilities for the correct band
On multi-band phys, capabilities can differ between bands.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-13 10:54:32 +02:00
Felix Fietkau
813002176f procd: update to Git HEAD (2025-08-12)
dafdf98b03bf service: fix object nesting in the ubus get_data call

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-12 18:14:44 +02:00
Felix Fietkau
aa0b5eb429 wifi-scripts: ucode: fix unencrypted sta connection
add missing key_mgmt option

Fixes: https://github.com/openwrt/openwrt/issues/17578
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-10 10:17:41 +02:00
Felix Fietkau
3aee42001f wifi-scripts: add modular wps button handler scripts
Execute scripts in /etc/rc.wps until one of them returns a exit code of 0.
Split up sta and ap handling of wps into separate scripts.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-08 18:53:30 +02:00
Felix Fietkau
adb1fce19b wifi-scripts: set rsn_overriding for client mode interfaces
Unless HE/EHT is enabled, the client should not process the RSN override IE.
This prevents picking up unsupported ciphers

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-04 12:40:08 +02:00
Felix Fietkau
640c3984e3 wifi-scripts: add support for passing wifi-device settings via procd
Allows either overriding individual device settings, or passing complete devices

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-04 12:08:29 +02:00
Felix Fietkau
de447b93e0 wifi-scripts: fix handling changes to the wifi device disabled flag
Allow toggling autostart even for disabled devices
When switching from enabled to disabled, call teardown instead of setup

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-04 11:46:42 +02:00
Felix Fietkau
f3dd291b62 wifi-scripts: make wifi/utils.uc available in the legacy scripts variant
It can be used to look up the phy name from uci data in ucode scripts

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-04 11:46:42 +02:00
Felix Fietkau
7d570a489b wifi-scripts: fix handling hotplug-added wireless vifs
Pass the correct ifname and state

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-03 21:55:12 +02:00
Felix Fietkau
8444891064 wifi-scripts: fix setup of vifs on multi-radio devices
Ensure that the vlan name check is bypassed

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-03 21:55:12 +02:00
Felix Fietkau
cbc23f1eb0 wifi-scripts: ucode: remove leftover debug comment
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-03 21:55:12 +02:00
Felix Fietkau
f26d134436 wifi-scripts: ucode: enforce MFP for SAE connections
Avoids connection failures

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-03 21:55:12 +02:00
Felix Fietkau
287f1ea3dd wifi-scripts: ucode: fix ssid handling
Add proper escaping for ssid values.
Use it to fix multi-ap backhaul ssid.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-02 17:43:28 +02:00
Felix Fietkau
217c315423 wifi-scripts: ucode: add MLO interface support
MLO can be enabled by configuring a wifi-iface section with multiple
radios, like this:

  config wifi-iface
    list radio 'radio0'
    list radio 'radio1'
    option mlo '1'
    option ssid 'OpenWrt'
    option mode 'ap'
    option network 'lan'
    ...

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-02 16:46:59 +02:00
Felix Fietkau
816c2d86e7 hostapd: add support for MLO interfaces in ucode
MLO interface config is provided in a separate ubus call before
adding regular per-phy interfaces.
Preparation for full MLO support.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-02 16:46:59 +02:00
Felix Fietkau
96fa769937 netifd: update to Git HEAD (2025-08-02)
3a7878065829 system-dummy: add missing vrf functions
471d9d6abb6d CMakeLists.txt: bump minimum required version
c3a0255e2150 scripts: fix dummy mode on systems where libubox is in /usr/local
7a3b281230e4 update example mac80211 script and wireless config
d9f2dd2614f2 wireless: replace with ucode scripts
74c22601baad wireless: add MLO support to example scripts

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-08-02 16:46:31 +02:00
Felix Fietkau
119aa00a78 wifi-scripts: ucode: add support for iwinfo nl80211 phyname
It is needed for compatibility with scripts that rely on this
existing iwinfo behavior

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-07-18 12:33:14 +02:00
David Bauer
a854d833ea wifi-scripts: correctly set basic-rates with wpa_supplicant
Correctly load the list of basic_rates from UCI. basic-rates shall be
stored as a option-list. The current code did not retrieve this list
correctly.

wpa_supplicant uses a different config option to set basic-rates
when operating in mesh-mode.

Use the correct config key and calculation for mesh-interfaces.

Signed-off-by: David Bauer <mail@david-bauer.net>
2025-07-11 02:59:35 +02:00
Rosen Penev
7e09959efd mac80211: fix wmac node names
The upstream submission for this mandates the node to be named wifi
instead of wmac. Change all ath79 entries to match the new names and
remove the compatibility patch.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19328
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-07-07 17:28:14 +02:00
Agustin Lorenzo
9738853b73 hostapd: removed OSU support from configuration files, it was removed in the last hostapd update.
Ref: https://w1.fi/cgit/hostap/commit/hostapd?id=e835288592fd672469f46dc35a03e64115b996e5
Ref: https://w1.fi/cgit/hostap/commit/hostapd?id=7bb11e35d55e3d50199efc45921e76696bebd8ef

Fixes: https://github.com/openwrt/openwrt/issues/19142
Link: https://github.com/openwrt/openwrt/pull/19273
Signed-off-by: Agustin Lorenzo <agustin.lorenzo@thinco.es>
2025-07-05 14:49:12 +02:00
Felix Fietkau
14b686247a wifi-scripts: ucode: fix iwinfo crash on untracked interfaces
Deal with data.radio being null

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-07-05 14:41:00 +02:00
Felix Fietkau
ba2ae60a00 wifi-scripts: ucode: fix invalid generated MAC address
macaddr_base can be NULL, in which case it needs to be passed as an empty string

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-27 13:09:17 +02:00
Felix Fietkau
35a4608a30 wifi-scripts: iwinfo(ucode): add missing null checks
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-26 19:44:43 +02:00
Felix Fietkau
fdcb0e0b24 wifi-scripts: fix validation of require_mode
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-26 19:18:49 +02:00
Felix Fietkau
945d168dbe wifi-scripts: fix missing variables for setting frag/rts
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-26 19:16:42 +02:00
Felix Fietkau
126dc7ddb9 wifi-scripts: fix another regression in the ucode auth_type changes
Clear the right variable
Handle psk2 explicitly

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-25 13:26:59 +02:00
Felix Fietkau
8ad5416d99 wifi-scripts: fix corner case in RSN override support
When used, all relevant parameters need to be set

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-25 10:49:05 +02:00
Felix Fietkau
b48925fd9c wifi-scripts: add support for RSN overide and use it for improved WPA3 compat
Override via RSNE is a relatively new feature, which can be used to enable
WPA3 features in a way that is invisible to older clients.
Use it by default to mask the GCMP-256 cipher from older clients, since
there are compatibility issues with existing devices.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-24 15:07:23 +02:00
Felix Fietkau
583f81ef0e wifi-scripts: enforce management frame protection on 6 GHz
Configurations that don't enforce it are rejected by hostapd

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-21 20:34:12 +02:00
Felix Fietkau
254dd7d7d9 wifi-scripts: enable GCMP-256 by default on WPA3/OWE configurations with HE or EHT
GCMP-256 support is mandatory with EHT, but HE hardware can already be expected
to support it.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-21 20:34:09 +02:00
Felix Fietkau
a17c3be409 wifi-scripts: on psk-sae configurations, disable PSK support on 6 GHz
This allows sharing a wifi-iface section across bands while enforcing the no-PSK
rule for 6 GHz

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-06-21 20:34:06 +02:00
Benjamin Berg
168de5cafe wifi-scripts: add missing entries for mesh_nolearn
The plumbing is there in the ucode files to set the parameter using
nl80211. However, the option is never forwarded because it was missing
in mac80211.sh. Add it there and in the schema file.

Signed-off-by: Benjamin Berg <benjamin@sipsolutions.net>
Link: https://github.com/openwrt/openwrt/pull/19030
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-06-07 12:54:50 +02:00
Mantas Pucka
bb17f5756a wifi-scripts: fix calculation for eht_oper_centr_freq_seg0_idx
Inverted condition caused wrong value for eht_oper_centr_freq_seg0_idx
get selected in ETH320 mode, causing AP fail to start.

Signed-off-by: Mantas Pucka <mantas@8devices.com>
Link: https://github.com/openwrt/openwrt/pull/18998
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-06-07 11:44:45 +02:00
Sean Khan
b90feed6ba wifi-scripts: add missing 'network' property to wifi-iface schema
The ucode-based wifi interface validation is based on `hostapd.conf`
specific options, which means it's missing the OpenWrt-specific
'network' property.

This causes schema validation warnings like:
```
daemon.notice netifd: radio1 (1340): wifi-scripts: network is not present in the schema
```

The description is taken from the OpenWrt wiki:
https://openwrt.org/docs/guide-user/network/wifi/basic#common_options1

Signed-off-by: Sean Khan <datapronix@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18946
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-29 23:48:16 +02:00
Sean Khan
36b9a699a2 wifi-scripts: use consistent names for Qualcomm devices
The device manufacturer name for Qualcomm Atheros is listed
as "Qualcomm, Atheros" for PCI devices but "Qualcomm Atheros" under
"compatible". This gives inconsistent results in `iwinfo` and

```
Hardware: 0x168c:0x0046 0x168c:0xcafe [Qualcomm, Atheros QCA9984]
Hardware: embedded [Qualcomm Atheros IPQ8074]
```

Signed-off-by: Sean Khan <datapronix@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18039
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-27 11:27:24 +02:00
Sean Khan
f26bdea981 wifi-scripts: ucode: iwinfo: fix 'unknown' typo
The 'unknown' string was misspelled as 'unknonw'.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18039
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-27 11:27:24 +02:00
Sean Khan
0088a5a179 wifi-scripts: iwinfo: show units for signal and noise
Add 'dBm' units to 'Signal' and 'Noise' to match what non-ucode iwinfo shows.

Before:
  Signal: -49  Noise: -103

After:
  Signal: -49 dBm  Noise: -103 dBm

Signed-off-by: Sean Khan <datapronix@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18039
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-27 11:27:24 +02:00
Sean Khan
9bcc287414 wifi-scripts: iwinfo: don't show bitrate unit when unknown
When bitrate is unknown, the units shouldn't be displayed. This is
consistent with other "unknown" fields and non-ucode iwinfo.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18039
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-27 11:27:24 +02:00
Mantas Pucka
6bbf4a540d
wifi-scripts: add hotplug handler for slow-to-initialize ath12k radios
Some ath12k radios can take long time to initialize and register a
phy. This can cause netifd to fail to detect them during initial scan.
To address this issue, a hotplug script has been added to retry
configuration once they have registered their phy.

Signed-off-by: Mantas Pucka <mantas@8devices.com>
Link: https://github.com/openwrt/openwrt/pull/18459
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-04-12 10:38:54 +02:00
Ming Kuang
86eb1c0b5a wifi-scripts: mac80211.sh: add EHT and HE160 support to iw_htmode
For WIFI7 devices (such as mt7925e), the dev width is currently
always "20 MHz (no HT)" in monitor mode.

Add EHT and HE160 support to iw_htmode to fix this issue.
Additionally, the following changes are made:
1. Set iw_htmode to 160MHz for VHT160. The reason for the current
   VHT160 setting is unclear and seems to have been in place for
   over a decade (ibss_htmode [1]). If anyone knows its impact,
   please inform me so I can restore it.
2. Modify MHZ to MHz. The original matching table in the current
   iw tool uses MHz. Although the match is case-insensitive,
   correcting this won't hurt.

[1]: 768d09be87

Signed-off-by: Ming Kuang <ming@imkuang.com>
Link: https://github.com/openwrt/openwrt/pull/18319
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-04-07 00:53:54 +02:00
Lix Zhou
b74318481b wifi-scripts: failed to start hostapd if he_spr_psr_enabled is set
he_spr_psr_enabled is appended to hostapd.conf if it's enabled, but hostapd
doesn't support this config, it should be used as an internal flag to control
the he_spr_sr_control configuring.

Signed-off-by: Lix Zhou <xeontz@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18025
Signed-off-by: John Crispin <john@phrozen.org>
2025-02-19 08:07:52 +01:00
Sean Khan
c840629046 wifi-scripts: iwinfo: add definition for QCA9984
Fixes iwinfo output for QCA9984 devices.

Before:
```
  Hardware: nl80211 [Generic MAC80211]
```

After:
```
  Hardware: 0x168c:0x0046 0x168c:0xcafe [Qualcomm, Atheros QCA9984]
```

Signed-off-by: Sean Khan <datapronix@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18028
Signed-off-by: John Crispin <john@phrozen.org>
2025-02-19 08:07:20 +01:00
Sean Khan
15013e87cb wifi-scripts: iwinfo: add null checks for rx/tx bitrate
On some devices, the rx/tx bitrate may not always be available
right away, or at all when in mesh mode at plink is blocked causing
the following:

```
Reference error: left-hand side expression is null
In assoclist(), file /usr/share/ucode/iwinfo.uc, line 321, byte 46:
  called from function info (/usr/share/ucode/iwinfo.uc:427:33)
  called from anonymous function (/usr/bin/iwinfo:108:25)

 `                bitrate_raw: station.sta_info.tx_bitrate.bitrate,`
  Near here -----------------------------------------------^
Reference error: left-hand side expression is null
In assoclist(), file /usr/share/ucode/iwinfo.uc, line 314, byte 54:
  called from function info (/usr/share/ucode/iwinfo.uc:427:33)
  called from anonymous function (/usr/bin/iwinfo:108:25)

 `                bitrate: format_rate(station.sta_info.rx_bitrate.bitrate),`
  Near here -------------------------------------------------------^
Reference error: left-hand side expression is null
In assoc_flags(), file /usr/share/ucode/iwinfo.uc, line 216, byte 12:
  called from function assoclist (/usr/share/ucode/iwinfo.uc:323:51)
  called from function info (/usr/share/ucode/iwinfo.uc:427:33)
  called from anonymous function (/usr/bin/iwinfo:108:25)

 `        if (data[k])`
  Near here -------^
```

This was seen on Linksys MX5300 in mesh mode (QCA9984).

Signed-off-by: Sean Khan <datapronix@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18027
Signed-off-by: John Crispin <john@phrozen.org>
2025-02-19 08:07:20 +01:00
Sean Khan
eabea737fa wifi-scripts: fix missing VHT capabilities detection
* Add missing parentheses in the conditionals for VHT160/VHT160-80PLUS80
  and VHT_MAX_MPDU capabilities. The missing parentheses caused the bitwise
  AND to be evaluated after the equality comparison due to ECMA's operator
  precedence, where `==` has higher precedence than `&`.

* Fix Max MPDU length detection by changing the comparison operators to
  `>=` vs `>` otherwise the condition would never be met.

* Add missing default values:
  - `true` value for `short_gi_80` (As it exists for `short_gi_20`, `short_gi_40`, `short_gi_160`)
  - `7` for `vht_max_mpdu` (Without it the loop in MAX-MPDU-* calculation always compares with null)

* Change the `vht160` condition to `config.vht160 <= 2`. This flag is
  `2` by default, and only ever set to `0` when `vht_oper_chwidth < 2`.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18013
Signed-off-by: John Crispin <john@phrozen.org>
2025-02-19 08:07:20 +01:00