From 3e6b3b3d02749b8b971f298ca8d3c1a103e54c82 Mon Sep 17 00:00:00 2001
From: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: Mon, 14 Dec 2020 14:21:27 +0100
Subject: [PATCH] brcm63xx: wifi save back ifnames

In case of autogenerated ifnames, save them
back to UCI (config/wireless).

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
---
 .../lib/netifd/wireless/mac80211.sh           | 42 ++++++++++++++++++-
 1 file changed, 41 insertions(+), 1 deletion(-)

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 7c7120cfb..c3e00a9ba 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
-- 
GitLab