diff --git a/iopsys-brcm63xx-arm/base-files/lib/netifd/wireless/mac80211.sh b/iopsys-brcm63xx-arm/base-files/lib/netifd/wireless/mac80211.sh index 7c7120cfb88b3565c6d7f41430698c7703d63fa7..c3e00a9ba394dcd013ce41eb5d89e34058ff6722 100755 --- a/iopsys-brcm63xx-arm/base-files/lib/netifd/wireless/mac80211.sh +++ b/iopsys-brcm63xx-arm/base-files/lib/netifd/wireless/mac80211.sh @@ -615,6 +615,40 @@ mac80211_iw_interface_add() { return $rc } +get_uci_idx() { + local phy=$1 + local mode=$2 + local ssid=$3 + + local sections=$(seq 0 15) + + + phyidx=$(echo "$phy" | sed 's/\(phy\)\([0-9]*\)/\2/g') + device="wl${phyidx}" + + for section in $sections; do + d=$(uci get wireless.@wifi-iface[$section].device) + m=$(uci get wireless.@wifi-iface[$section].mode) + s=$(uci get wireless.@wifi-iface[$section].ssid) + + + [ -z "$d" ] && continue + [ -z "$m" ] && continue + + logger -t mac80211 "[$section] $device/$mode/$ssid vs $d/$m/$s" + [ -z "$s" ] && [ "$mode" == "ap" ] && continue + + [ "$device" != "$d" ] && continue + [ "$mode" != "$m" ] && continue + [ "$ssid" != "$s" ] && [ "$mode" == "ap" ] && continue + + echo "$section" + return + done + + echo "unknown" +} + mac80211_prepare_vif() { json_select config @@ -657,7 +691,13 @@ mac80211_prepare_vif() { ;; esac - logger -t mac80211 "$phy $mode generated ifname $ifname" + uci_idx=$(get_uci_idx $phy $mode $ssid) + logger -t mac80211 "$phy $mode generated ifname $ifname uci_idx $uci_idx" + + [ "$uci_idx" != "unknown" ] && { + uci -q set wireless.@wifi-iface[$uci_idx].ifname="$ifname" + uci commit wireless + } } case $mode in