Previously, wifi detect simply dumped its generated wireless
configuration out 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.

Note: uci writes a "cfg123456" printout to stdout when it
generates a name for the unnamed section ("add wireless wifi-iface").
Since we currently pipe wifi detect into /etc/config/wireless, we
have to redirected this output, so it doesn't end up in the wireless
configuration file.

Signed-off-by: Christian Lamparter <chunk...@gmail.com>
---
 package/kernel/mac80211/files/lib/wifi/mac80211.sh | 45 +++++++++++-----------
 1 file changed, 22 insertions(+), 23 deletions(-)

diff --git a/package/kernel/mac80211/files/lib/wifi/mac80211.sh 
b/package/kernel/mac80211/files/lib/wifi/mac80211.sh
index 9b15de5..253de40 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 > /dev/null <<-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
+
+                       add wireless wifi-iface
+                       set wireless.@wifi-iface[-1].device=radio${devidx}
+                       set wireless.@wifi-iface[-1].network=lan
+                       set wireless.@wifi-iface[-1].mode=ap
+                       set wireless.@wifi-iface[-1].ssid=LEDE
+                       set wireless.@wifi-iface[-1].encryption=none
 EOF
-       devidx=$(($devidx + 1))
-       done
-}
+               uci commit -q &> /dev/null
 
+               devidx=$(($devidx + 1))
+               done
+}
-- 
2.9.3


_______________________________________________
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev

Reply via email to