3 append DRIVERS
"mac80211"
5 check_mac80211_device
() {
10 [ -n "$found" ] && return 0
13 config_get phy
"$device" phy
15 [ -n "$phy" ] && case "$phy" in
17 [ -d /sys
/class
/ieee80211
/$phy ] && \
18 phy_path
="$(iwinfo nl80211 path "$dev")"
21 if json_is_a
"$phy" object
; then
23 json_get_var phy_path path
25 elif json_is_a
"${phy%.*}" object
; then
26 json_select
"${phy%.*}"
27 json_get_var phy_path path
29 phy_path
="$phy_path+${phy##*.}"
34 [ -n "$phy_path" ] || config_get phy_path
"$device" path
35 [ -n "$path" -a "$phy_path" = "$path" ] && {
40 config_get dev_macaddr
"$device" macaddr
42 [ -n "$macaddr" -a "$dev_macaddr" = "$macaddr" ] && found
=1
48 __get_band_defaults
() {
51 ( iw phy
"$phy" info
; echo ) |
awk '
56 ($1 == "Band" || $1 == "") && band {
60 if (vht && band != "1:") mode="VHT80"
62 if (he && band == "1:") mode="HE20"
63 sub("\\[", "", channel)
64 sub("\\]", "", channel)
65 bands = bands band channel ":" mode " "
78 $0 ~ "Capabilities:" {
82 $0 ~ "VHT Capabilities" {
90 $1 == "*" && $3 == "MHz" && $0 !~ /disabled/ && band && !channel {
102 for c
in $
(__get_band_defaults
"$phy"); do
103 local band
="${c%%:*}"
105 local chan
="${c%%:*}"
107 local mode
="${c%%:*}"
117 [ -n "$band" ] ||
continue
118 [ -n "$mode_band" -a "$band" = "6g" ] && return
129 local idx
="${1#radio}"
130 [ "$devidx" -ge "${1#radio}" ] && devidx
=$
((idx
+ 1))
139 json_get_var phy_path path
142 if [ "$path" = "$phy_path" ]; then
144 elif [ "${path%+*}" = "$phy_path" ]; then
145 fallback_board_dev
="$name.${path#*+}"
152 config_foreach check_devidx wifi-device
154 json_load_file
/etc
/board.json
156 for _dev
in /sys
/class
/ieee80211
/*; do
157 [ -e "$_dev" ] ||
continue
166 get_band_defaults
"$dev"
168 path
="$(iwinfo nl80211 path "$dev")"
169 macaddr
="$(cat /sys/class/ieee80211/${dev}/macaddress)"
172 json_for_each_item check_board_phy wlan
173 [ -n "$board_dev" ] || board_dev
="$fallback_board_dev"
174 [ -n "$board_dev" ] && dev
="$board_dev"
177 config_foreach check_mac80211_device wifi-device
"$path" "$macaddr"
178 [ -n "$found" ] && continue
180 name
="radio${devidx}"
181 devidx
=$
(($devidx + 1))
184 if [ -n "$path" ]; then
185 dev_id
="set wireless.${name}.path='$path'"
187 dev_id
="set wireless.${name}.macaddr='$macaddr'"
191 dev_id
="set wireless.${name}.phy='$dev'"
196 set wireless.${name}=wifi-device
197 set wireless.${name}.type=mac80211
199 set wireless.${name}.channel=${channel}
200 set wireless.${name}.band=${mode_band}
201 set wireless.${name}.htmode=$htmode
202 set wireless.${name}.disabled=1
204 set wireless.default_${name}=wifi-iface
205 set wireless.default_${name}.device=${name}
206 set wireless.default_${name}.network=lan
207 set wireless.default_${name}.mode=ap
208 set wireless.default_${name}.ssid=OpenWrt
209 set wireless.default_${name}.encryption=none
211 uci
-q commit wireless