wifi-scripts: add option to set per-device ifname prefix
authorFelix Fietkau <nbd@nbd.name>
Wed, 4 Dec 2024 10:59:14 +0000 (11:59 +0100)
committerFelix Fietkau <nbd@nbd.name>
Wed, 4 Dec 2024 13:59:30 +0000 (14:59 +0100)
Simplifies setting ifname to a different pattern for all affected
interfaces.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
package/network/config/wifi-scripts/files-ucode/lib/netifd/wireless/mac80211.sh
package/network/config/wifi-scripts/files-ucode/usr/share/schema/wireless.wifi-device.json
package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh

index fe364b8f48e6898f74bdda61d3eaf03b103653ee..8b55d01e7a8b51e451449da2fec0b05eb76308fb 100755 (executable)
@@ -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);
                }
 
index 9a7e777b633a8371d2a5dd9bd6467faf3f6284cb..0588401c99e639d108640ec38db80b9ebda4dd27 100644 (file)
                        "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"
index 3d953eff74d2faabcfb12d21eda53bdfdc8f8b88..f65128783fa5bb6606e3a7e5a1f9fa9245ebea7e 100755 (executable)
@@ -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