[openwrt/openwrt] wifi-scripts: ucode: get the phy capabilities for the correct band

LEDE Commits lede-commits at lists.infradead.org
Wed Aug 13 01:55:22 PDT 2025


nbd pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/d223d29feb7ae6eca61b5cc0072fcecc3bcc20ef

commit d223d29feb7ae6eca61b5cc0072fcecc3bcc20ef
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Wed Aug 13 10:54:03 2025 +0200

    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 at nbd.name>
---
 .../files-ucode/usr/share/ucode/wifi/hostapd.uc    | 34 +++++++++++++---------
 1 file changed, 20 insertions(+), 14 deletions(-)

diff --git a/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc b/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc
index a31b2955eb..b97597a1b3 100644
--- a/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc
+++ b/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc
@@ -11,6 +11,7 @@ import * as fs from 'fs';
 const NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER = 33;
 const NL80211_EXT_FEATURE_RADAR_BACKGROUND = 61;
 
+const nl80211_bands = [ '2g', '5g', '60g', '6g' ];
 let phy_features = {};
 let phy_capabilities = {};
 
@@ -436,23 +437,28 @@ function device_extended_features(data, flag) {
 	return !!(data[flag / 8] | (1 << (flag % 8)));
 }
 
-function device_capabilities(phy) {
+function device_capabilities(config) {
+	let phy = config.phy;
 	let idx = +fs.readfile(`/sys/class/ieee80211/${phy}/index`);
 	phy = nl80211.request(nl80211.const.NL80211_CMD_GET_WIPHY, nl80211.const.NLM_F_DUMP, { wiphy: idx, split_wiphy_dump: true });
 	if (!phy)
 		return;
-	for (let band in phy.wiphy_bands) {
-		if (!band)
+
+	let band_idx = index(nl80211_bands, config.band);
+	if (band_idx < 0)
+		return;
+
+	let band = phy.wiphy_bands[band_idx];
+	if (!band)
+		return;
+
+	phy_capabilities.ht_capa = band.ht_capa ?? 0;
+	phy_capabilities.vht_capa = band.vht_capa ?? 0;
+	for (let iftype in band.iftype_data) {
+		if (!iftype.iftypes.ap)
 			continue;
-		phy_capabilities.ht_capa = band.ht_capa ?? 0;
-		phy_capabilities.vht_capa = band.vht_capa ?? 0;
-		for (let iftype in band.iftype_data) {
-			if (!iftype.iftypes.ap)
-				continue;
-			phy_capabilities.he_mac_cap = iftype.he_cap_mac;
-			phy_capabilities.he_phy_cap = iftype.he_cap_phy;
-		}
-		break;
+		phy_capabilities.he_mac_cap = iftype.he_cap_mac;
+		phy_capabilities.he_phy_cap = iftype.he_cap_phy;
 	}
 
 	phy_features.ftm_responder = device_extended_features(phy.extended_features, NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER);
@@ -460,10 +466,10 @@ function device_capabilities(phy) {
 }
 
 function generate(config) {
-	if (!config.phy)
+	if (!config)
 		die(`${config.path} is an unknown phy`);
 
-	device_capabilities(config.phy);
+	device_capabilities(config);
 
 	append('driver', 'nl80211');
 




More information about the lede-commits mailing list