[source] base-files, mac80211, broadcom-wl: use uci to populate wireless config

LEDE Commits lede-commits at lists.infradead.org
Thu Nov 3 03:08:05 PDT 2016


nbd pushed a commit to source.git, branch master:
https://git.lede-project.org/5e35b4562fb73aaa1c75a3404fed2efb6afe03f8

commit 5e35b4562fb73aaa1c75a3404fed2efb6afe03f8
Author: Christian Lamparter <chunkeey at googlemail.com>
AuthorDate: Mon Oct 17 15:59:13 2016 +0200

    base-files, mac80211, broadcom-wl: use uci to populate wireless config
    
    Previously, wifi detect simply dumped its generated wireless
    configuration to STDOUT. A second step was needed to append
    the configuration to /etc/config/wireless (or create it, if
    it didn't exist).
    
    With this patch, The wifi detection script will now use uci
    to update the wireless configuration directly.
    
    This patch also makes the initially created wifi-iface a
    named section ('default_radio$X' for mac80211 and
    'default_wl$X' for broadcom). With this change, uci will
    not print the cfgHASH to STDOUT (which would now corrupt
    the wireless configuration). It will also prevent adding
    duplicated wifi interface configurations, if the wifi
    configuration is run concurrently.
    
    Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
---
 package/base-files/files/etc/init.d/boot           |  6 +--
 .../kernel/broadcom-wl/files/lib/wifi/broadcom.sh  | 30 +++++++--------
 package/kernel/mac80211/files/lib/wifi/mac80211.sh | 43 +++++++++++-----------
 3 files changed, 37 insertions(+), 42 deletions(-)

diff --git a/package/base-files/files/etc/init.d/boot b/package/base-files/files/etc/init.d/boot
index 904f7db..03b0fa0 100755
--- a/package/base-files/files/etc/init.d/boot
+++ b/package/base-files/files/etc/init.d/boot
@@ -41,11 +41,7 @@ boot() {
 	# allow wifi modules time to settle
 	sleep 1
 
-	/sbin/wifi detect > /tmp/wireless.tmp
-	[ -s /tmp/wireless.tmp ] && {
-		cat /tmp/wireless.tmp >> /etc/config/wireless
-	}
-	rm -f /tmp/wireless.tmp
+	/sbin/wifi detect
 
 	/bin/config_generate
 	uci_apply_defaults
diff --git a/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh b/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh
index deb4ddf..2780fa1 100644
--- a/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh
+++ b/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh
@@ -456,22 +456,22 @@ detect_broadcom() {
 		config_get type wl${i} type
 		[ "$type" = broadcom ] && continue
 		channel=`wlc ifname wl${i} channel`
-		cat <<EOF
-config wifi-device  wl${i}
-	option type     broadcom
-	option channel  ${channel:-11}
-	option txantenna 3
-	option rxantenna 3
-	# REMOVE THIS LINE TO ENABLE WIFI:
-	option disabled 1
-
-config wifi-iface
-	option device   wl${i}
-	option network	lan
-	option mode     ap
-	option ssid     Lede${i#0}
-	option encryption none
 
+		uci -q batch <<-EOF
+			set wireless.wl${i}=wifi-device
+			set wireless.wl${i}.type=broadcom
+			set wireless.wl${i}.channel=${channel:-11}
+			set wireless.wl${i}.txantenna=3
+			set wireless.wl${i}.rxantenna=3
+			set wireless.wl${i}.disabled=1
+
+			set wireless.default_wl${i}=wifi-iface
+			set wireless.default_wl${i}.device=wl${i}
+			set wireless.default_wl${i}.network=lan
+			set wireless.default_wl${i}.mode=ap
+			set wireless.default_wl${i}.ssid=Lede${i#0}
+			set wireless.default_wl${i}.encryption=none
 EOF
+		uci -q commit wireless
 	done
 }
diff --git a/package/kernel/mac80211/files/lib/wifi/mac80211.sh b/package/kernel/mac80211/files/lib/wifi/mac80211.sh
index 9b15de5..4bfc742 100644
--- a/package/kernel/mac80211/files/lib/wifi/mac80211.sh
+++ b/package/kernel/mac80211/files/lib/wifi/mac80211.sh
@@ -92,7 +92,7 @@ detect_mac80211() {
 			htmode="VHT80"
 		}
 
-		[ -n $htmode ] && append ht_capab "	option htmode	$htmode" "$N"
+		[ -n $htmode ] && ht_capab="set wireless.radio${devidx}.htmode=$htmode"
 
 		if [ -x /usr/bin/readlink -a -h /sys/class/ieee80211/${dev} ]; then
 			path="$(readlink -f /sys/class/ieee80211/${dev}/device)"
@@ -104,30 +104,29 @@ detect_mac80211() {
 			case "$path" in
 				platform*/pci*) path="${path##platform/}";;
 			esac
-			dev_id="	option path	'$path'"
+			dev_id="set wireless.radio${devidx}.path='$path'"
 		else
-			dev_id="	option macaddr	$(cat /sys/class/ieee80211/${dev}/macaddress)"
+			dev_id="set wireless.radio${devidx}.macaddr=$(cat /sys/class/ieee80211/${dev}/macaddress)"
 		fi
 
-		cat <<EOF
-config wifi-device  radio$devidx
-	option type     mac80211
-	option channel  ${channel}
-	option hwmode	11${mode_band}
-$dev_id
-$ht_capab
-	# REMOVE THIS LINE TO ENABLE WIFI:
-	option disabled 1
-
-config wifi-iface
-	option device   radio$devidx
-	option network  lan
-	option mode     ap
-	option ssid     LEDE
-	option encryption none
-
+		uci -q batch <<-EOF
+			set wireless.radio${devidx}=wifi-device
+			set wireless.radio${devidx}.type=mac80211
+			set wireless.radio${devidx}.channel=${channel}
+			set wireless.radio${devidx}.hwmode=11${mode_band}
+			${dev_id}
+			${ht_capab}
+			set wireless.radio${devidx}.disabled=1
+
+			set wireless.default_radio${devidx}=wifi-iface
+			set wireless.default_radio${devidx}.device=radio${devidx}
+			set wireless.default_radio${devidx}.network=lan
+			set wireless.default_radio${devidx}.mode=ap
+			set wireless.default_radio${devidx}.ssid=LEDE
+			set wireless.default_radio${devidx}.encryption=none
 EOF
-	devidx=$(($devidx + 1))
+		uci -q commit wireless
+
+		devidx=$(($devidx + 1))
 	done
 }
-



More information about the lede-commits mailing list