[openwrt/openwrt] wifi-scripts: add option to set per-device ifname prefix

LEDE Commits lede-commits at lists.infradead.org
Wed Dec 4 06:00:06 PST 2024


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

commit a9ff3ba24b9466d9c06b9a9e1c2e9672bdd9f6f9
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Wed Dec 4 11:59:14 2024 +0100

    wifi-scripts: add option to set per-device ifname prefix
    
    Simplifies setting ifname to a different pattern for all affected
    interfaces.
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 .../files-ucode/lib/netifd/wireless/mac80211.sh            |  7 +++++--
 .../files-ucode/usr/share/schema/wireless.wifi-device.json |  4 ++++
 .../wifi-scripts/files/lib/netifd/wireless/mac80211.sh     | 14 +++++++++-----
 3 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/package/network/config/wifi-scripts/files-ucode/lib/netifd/wireless/mac80211.sh b/package/network/config/wifi-scripts/files-ucode/lib/netifd/wireless/mac80211.sh
index fe364b8f48..8b55d01e7a 100755
--- a/package/network/config/wifi-scripts/files-ucode/lib/netifd/wireless/mac80211.sh
+++ b/package/network/config/wifi-scripts/files-ucode/lib/netifd/wireless/mac80211.sh
@@ -210,6 +210,9 @@ function setup() {
 	}
 	data.phy_suffix = phy_suffix(data.config.radio, ":");
 	data.vif_phy_suffix = phy_suffix(data.config.radio, ".");
+	data.ifname_prefix = data.config.ifname_prefix;
+	if (!data.ifname_prefix)
+		data.ifname_prefix = data.phy + data.vif_phy_suffix + "-";
 	let active_ifnames = [];
 
 	log('Starting');
@@ -229,12 +232,12 @@ function setup() {
 		let mode_idx = idx[mode]++;
 
 		if (!v.config.ifname) 
-			v.config.ifname = data.phy + data.vif_phy_suffix + "-" + mode + mode_idx;
+			v.config.ifname = data.ifname_prefix + mode + mode_idx;
 		push(active_ifnames, v.config.ifname);
 
 		if (v.config.encryption == 'owe' && v.config.owe_transition) {
 			mode_idx = idx[mode]++;
-			v.config.owe_transition_ifname = data.phy + data.vif_phy_suffix + "-" + mode + mode_idx;
+			v.config.owe_transition_ifname = data.ifname_prefix + mode + mode_idx;
 			push(active_ifnames, v.config.ifname);
 		}
 
diff --git a/package/network/config/wifi-scripts/files-ucode/usr/share/schema/wireless.wifi-device.json b/package/network/config/wifi-scripts/files-ucode/usr/share/schema/wireless.wifi-device.json
index 9a7e777b63..0588401c99 100644
--- a/package/network/config/wifi-scripts/files-ucode/usr/share/schema/wireless.wifi-device.json
+++ b/package/network/config/wifi-scripts/files-ucode/usr/share/schema/wireless.wifi-device.json
@@ -396,6 +396,10 @@
 			"type": "alias",
 			"default": "assoc_sa_query_retry_timeout"
 		},
+		"ifname_prefix": {
+			"description": "Default ifname prefix for this radio",
+			"type": "string"
+		},
 		"iface_max_num_sta": {
 			"description": "Limits the maximum allowed number of associated clients",
 			"type": "number"
diff --git a/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh b/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh
index 3d953eff74..f65128783f 100755
--- a/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh
+++ b/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh
@@ -29,6 +29,7 @@ drv_mac80211_init_device_config() {
 	config_add_string path phy 'macaddr:macaddr'
 	config_add_string tx_burst
 	config_add_string distance
+	config_add_string ifname_prefix
 	config_add_int radio beacon_int chanbw frag rts
 	config_add_int rxantenna txantenna txpower min_tx_power
 	config_add_int num_global_macaddr multiple_bssid
@@ -660,9 +661,9 @@ mac80211_check_ap() {
 }
 
 mac80211_set_ifname() {
-	local phy="$1"
-	local prefix="$2"
-	eval "ifname=\"$phy-$prefix\${idx_$prefix:-0}\"; idx_$prefix=\$((\${idx_$prefix:-0 } + 1))"
+	local prefix="$1"
+	local type="$2"
+	eval "ifname=\"$prefix$type\${idx_$type:-0}\"; idx_$type=\$((\${idx_$type:-0 } + 1))"
 }
 
 mac80211_prepare_vif() {
@@ -679,7 +680,7 @@ mac80211_prepare_vif() {
 		monitor) prefix=mon;;
 		esac
 
-		mac80211_set_ifname "$phy$vif_phy_suffix" "$prefix"
+		mac80211_set_ifname "$ifname_prefix" "$prefix"
 	}
 
 	append active_ifnames "$ifname"
@@ -1105,7 +1106,8 @@ drv_mac80211_setup() {
 		txpower \
 		rxantenna txantenna \
 		frag rts beacon_int:100 htmode \
-		num_global_macaddr:1 multiple_bssid
+		num_global_macaddr:1 multiple_bssid \
+		ifname_prefix
 	json_get_values basic_rate_list basic_rate
 	json_get_values scan_list scan_list
 	json_select ..
@@ -1124,6 +1126,8 @@ drv_mac80211_setup() {
 		return 1
 	}
 
+	set_default ifname_prefix "$phy$vif_phy_suffix-"
+
 	local wdev
 	local cwdev
 	local found




More information about the lede-commits mailing list