[LEDE-DEV] [PATCH v3 2/4] base-files, mac80211, broadcom-wl: use uci to populate wireless config
Christian Lamparter
chunkeey at googlemail.com
Mon Oct 17 06:59:13 PDT 2016
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>
---
All changes to base-files, mac80211 and broadcom-wl packages
have been integrated into a single patch to play nice with
git bisect.
v2 -> v3
- used another method to add a new wifi-iface instance,
that doesn't produce any stray messages or duplicated
wifi-iface configs.
- uci should only commit wireless changes.
- merged mac80211 and broadcom-wl changes to make the
patch bisectalbe.
---
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
}
-
--
2.9.3
More information about the Lede-dev
mailing list