OpenWrt – Blame information for rev 4
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
4 | office | 1 | #!/bin/sh |
2 | append DRIVERS "mac80211" |
||
3 | |||
4 | lookup_phy() { |
||
5 | [ -n "$phy" ] && { |
||
6 | [ -d /sys/class/ieee80211/$phy ] && return |
||
7 | } |
||
8 | |||
9 | local devpath |
||
10 | config_get devpath "$device" path |
||
11 | [ -n "$devpath" ] && { |
||
12 | for phy in $(ls /sys/class/ieee80211 2>/dev/null); do |
||
13 | case "$(readlink -f /sys/class/ieee80211/$phy/device)" in |
||
14 | *$devpath) return;; |
||
15 | esac |
||
16 | done |
||
17 | } |
||
18 | |||
19 | local macaddr="$(config_get "$device" macaddr | tr 'A-Z' 'a-z')" |
||
20 | [ -n "$macaddr" ] && { |
||
21 | for _phy in /sys/class/ieee80211/*; do |
||
22 | [ -e "$_phy" ] || continue |
||
23 | |||
24 | [ "$macaddr" = "$(cat ${_phy}/macaddress)" ] || continue |
||
25 | phy="${_phy##*/}" |
||
26 | return |
||
27 | done |
||
28 | } |
||
29 | phy= |
||
30 | return |
||
31 | } |
||
32 | |||
33 | find_mac80211_phy() { |
||
34 | local device="$1" |
||
35 | |||
36 | config_get phy "$device" phy |
||
37 | lookup_phy |
||
38 | [ -n "$phy" -a -d "/sys/class/ieee80211/$phy" ] || { |
||
39 | echo "PHY for wifi device $1 not found" |
||
40 | return 1 |
||
41 | } |
||
42 | config_set "$device" phy "$phy" |
||
43 | |||
44 | config_get macaddr "$device" macaddr |
||
45 | [ -z "$macaddr" ] && { |
||
46 | config_set "$device" macaddr "$(cat /sys/class/ieee80211/${phy}/macaddress)" |
||
47 | } |
||
48 | |||
49 | return 0 |
||
50 | } |
||
51 | |||
52 | check_mac80211_device() { |
||
53 | config_get phy "$1" phy |
||
54 | [ -z "$phy" ] && { |
||
55 | find_mac80211_phy "$1" >/dev/null || return 0 |
||
56 | config_get phy "$1" phy |
||
57 | } |
||
58 | [ "$phy" = "$dev" ] && found=1 |
||
59 | } |
||
60 | |||
61 | detect_mac80211() { |
||
62 | devidx=0 |
||
63 | config_load wireless |
||
64 | while :; do |
||
65 | config_get type "radio$devidx" type |
||
66 | [ -n "$type" ] || break |
||
67 | devidx=$(($devidx + 1)) |
||
68 | done |
||
69 | |||
70 | for _dev in /sys/class/ieee80211/*; do |
||
71 | [ -e "$_dev" ] || continue |
||
72 | |||
73 | dev="${_dev##*/}" |
||
74 | |||
75 | found=0 |
||
76 | config_foreach check_mac80211_device wifi-device |
||
77 | [ "$found" -gt 0 ] && continue |
||
78 | |||
79 | mode_band="g" |
||
80 | channel="11" |
||
81 | htmode="" |
||
82 | ht_capab="" |
||
83 | |||
84 | iw phy "$dev" info | grep -q 'Capabilities:' && htmode=HT20 |
||
85 | |||
86 | iw phy "$dev" info | grep -q '5180 MHz' && { |
||
87 | mode_band="a" |
||
88 | channel="36" |
||
89 | iw phy "$dev" info | grep -q 'VHT Capabilities' && htmode="VHT80" |
||
90 | } |
||
91 | |||
92 | [ -n "$htmode" ] && ht_capab="set wireless.radio${devidx}.htmode=$htmode" |
||
93 | |||
94 | if [ -x /usr/bin/readlink -a -h /sys/class/ieee80211/${dev} ]; then |
||
95 | path="$(readlink -f /sys/class/ieee80211/${dev}/device)" |
||
96 | else |
||
97 | path="" |
||
98 | fi |
||
99 | if [ -n "$path" ]; then |
||
100 | path="${path##/sys/devices/}" |
||
101 | case "$path" in |
||
102 | platform*/pci*) path="${path##platform/}";; |
||
103 | esac |
||
104 | dev_id="set wireless.radio${devidx}.path='$path'" |
||
105 | else |
||
106 | dev_id="set wireless.radio${devidx}.macaddr=$(cat /sys/class/ieee80211/${dev}/macaddress)" |
||
107 | fi |
||
108 | |||
109 | uci -q batch <<-EOF |
||
110 | set wireless.radio${devidx}=wifi-device |
||
111 | set wireless.radio${devidx}.type=mac80211 |
||
112 | set wireless.radio${devidx}.channel=${channel} |
||
113 | set wireless.radio${devidx}.hwmode=11${mode_band} |
||
114 | ${dev_id} |
||
115 | ${ht_capab} |
||
116 | set wireless.radio${devidx}.disabled=1 |
||
117 | |||
118 | set wireless.default_radio${devidx}=wifi-iface |
||
119 | set wireless.default_radio${devidx}.device=radio${devidx} |
||
120 | set wireless.default_radio${devidx}.network=lan |
||
121 | set wireless.default_radio${devidx}.mode=ap |
||
122 | set wireless.default_radio${devidx}.ssid=OpenWrt |
||
123 | set wireless.default_radio${devidx}.encryption=none |
||
124 | EOF |
||
125 | uci -q commit wireless |
||
126 | |||
127 | devidx=$(($devidx + 1)) |
||
128 | done |
||
129 | } |