2 .
/lib
/netifd
/mac80211.sh
4 append DRIVERS
"mac80211"
8 [ -d /sys
/class
/ieee80211
/$phy ] && return
12 config_get devpath
"$device" path
13 [ -n "$devpath" ] && {
14 phy
="$(mac80211_path_to_phy "$devpath")"
15 [ -n "$phy" ] && return
18 local macaddr
="$(config_get "$device" macaddr | tr 'A-Z' 'a-z')"
19 [ -n "$macaddr" ] && {
20 for _phy
in /sys
/class
/ieee80211
/*; do
21 [ -e "$_phy" ] ||
continue
23 [ "$macaddr" = "$(cat ${_phy}/macaddress)" ] ||
continue
35 config_get phy
"$device" phy
37 [ -n "$phy" -a -d "/sys/class/ieee80211/$phy" ] ||
{
38 echo "PHY for wifi device $1 not found"
41 config_set
"$device" phy
"$phy"
43 config_get macaddr
"$device" macaddr
44 [ -z "$macaddr" ] && {
45 config_set
"$device" macaddr
"$(cat /sys/class/ieee80211/${phy}/macaddress)"
51 check_mac80211_device
() {
52 config_get phy
"$1" phy
54 find_mac80211_phy
"$1" >/dev
/null ||
return 0
55 config_get phy
"$1" phy
57 [ "$phy" = "$dev" ] && found
=1
61 __get_band_defaults
() {
64 ( iw phy
"$phy" info
; echo ) |
awk '
69 ($1 == "Band" || $1 == "") && band {
75 if (he && band == "1:") mode="HE20"
76 sub("\\[", "", channel)
77 sub("\\]", "", channel)
78 bands = bands band channel ":" mode " "
91 $0 ~ "Capabilities:" {
95 $0 ~ "VHT Capabilities:" {
103 $1 == "*" && $3 == "MHz" && $0 !~ /disabled/ && band && !channel {
112 get_band_defaults
() {
115 for c
in $
(__get_band_defaults
"$phy"); do
116 local band
="${c%%:*}"
118 local chan
="${c%%:*}"
120 local mode
="${c%%:*}"
130 [ -n "$band" ] ||
continue
131 [ -n "$mode_band" -a "$band" = "6g" ] && return
143 config_get
type "radio$devidx" type
144 [ -n "$type" ] ||
break
145 devidx
=$
(($devidx + 1))
148 for _dev
in /sys
/class
/ieee80211
/*; do
149 [ -e "$_dev" ] ||
continue
154 config_foreach check_mac80211_device wifi-device
155 [ "$found" -gt 0 ] && continue
162 get_band_defaults
"$dev"
164 path
="$(mac80211_phy_to_path "$dev")"
165 if [ -n "$path" ]; then
166 dev_id
="set wireless.radio${devidx}.path='$path'"
168 dev_id
="set wireless.radio${devidx}.macaddr=$(cat /sys/class/ieee80211/${dev}/macaddress)"
172 set wireless.radio${devidx}=wifi-device
173 set wireless.radio${devidx}.type=mac80211
175 set wireless.radio${devidx}.channel=${channel}
176 set wireless.radio${devidx}.band=${mode_band}
177 set wireless.radio${devidx}.htmode=$htmode
178 set wireless.radio${devidx}.disabled=1
180 set wireless.default_radio${devidx}=wifi-iface
181 set wireless.default_radio${devidx}.device=radio${devidx}
182 set wireless.default_radio${devidx}.network=lan
183 set wireless.default_radio${devidx}.mode=ap
184 set wireless.default_radio${devidx}.ssid=OpenWrt
185 set wireless.default_radio${devidx}.encryption=none
187 uci
-q commit wireless
189 devidx
=$
(($devidx + 1))