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, 15 Jan 2025 16:17:47 +0000 (17:17 +0100)
Simplifies setting ifname to a different pattern for all affected
interfaces.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit a9ff3ba24b9466d9c06b9a9e1c2e9672bdd9f6f9)

package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh

index 368885246a73b14153ffe3c7d83627f873111742..4bf452d2f6347cba0f496937d116624a9da46a6f 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"
@@ -1116,7 +1117,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 ..
@@ -1135,6 +1137,8 @@ drv_mac80211_setup() {
                return 1
        }
 
+       set_default ifname_prefix "$phy$vif_phy_suffix-"
+
        local wdev
        local cwdev
        local found