projects
/
openwrt
/
svn-archive
/
archive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
madwifi: ap+sta race conditions
[openwrt/svn-archive/archive.git]
/
package
/
madwifi
/
files
/
lib
/
wifi
/
madwifi.sh
diff --git
a/package/madwifi/files/lib/wifi/madwifi.sh
b/package/madwifi/files/lib/wifi/madwifi.sh
index 379ec0747b437db4cdbcb635363b1305d9dcc302..0ff929260056cf2680944f15aec3b5758ee24b76 100755
(executable)
--- a/
package/madwifi/files/lib/wifi/madwifi.sh
+++ b/
package/madwifi/files/lib/wifi/madwifi.sh
@@
-42,7
+42,7
@@
scan_atheros() {
*) echo "$device: Invalid mode combination in config"; return 1;;
esac
*) echo "$device: Invalid mode combination in config"; return 1;;
esac
- config_set "$device" vifs "${
ap:+$ap }${adhoc:+$adhoc }${ahdemo:+$ahdemo }${sta:+$sta
}${wds:+$wds }${monitor:+$monitor}"
+ config_set "$device" vifs "${
sta:+$sta }${ap:+$ap }${adhoc:+$adhoc }${ahdemo:+$ahdemo
}${wds:+$wds }${monitor:+$monitor}"
}
}
@@
-50,18
+50,14
@@
disable_atheros() (
local device="$1"
set_wifi_down "$device"
local device="$1"
set_wifi_down "$device"
- # kill all running hostapd and wpa_supplicant processes that
- # are running on atheros vifs
- for pid in `pidof hostapd wpa_supplicant`; do
- grep ath /proc/$pid/cmdline >/dev/null && \
- kill $pid
- done
include /lib/network
cd /proc/sys/net
for dev in *; do
grep "$device" "$dev/%parent" >/dev/null 2>/dev/null && {
include /lib/network
cd /proc/sys/net
for dev in *; do
grep "$device" "$dev/%parent" >/dev/null 2>/dev/null && {
- ifconfig "$dev" down
+ [ -f "/var/run/wifi-${dev}.pid" ] &&
+ kill "$(cat "/var/run/wifi-${dev}.pid")"
+ ifconfig "$dev" down
unbridge "$dev"
wlanconfig "$dev" destroy
}
unbridge "$dev"
wlanconfig "$dev" destroy
}
@@
-186,25
+182,23
@@
enable_atheros() {
esac
if [ -n "$antgpio" ]; then
softled=0
esac
if [ -n "$antgpio" ]; then
softled=0
- config_get polarity "$device" polarity
- case "$polarity" in
+ config_get antenna "$device" antenna
+ case "$antenna" in
+ external) antdiv=0; antrx=1; anttx=1 ;;
horizontal) antdiv=0; antrx=1; anttx=1 ;;
vertical) antdiv=0; antrx=2; anttx=2 ;;
auto) antdiv=1; antrx=0; anttx=0 ;;
esac
horizontal) antdiv=0; antrx=1; anttx=1 ;;
vertical) antdiv=0; antrx=2; anttx=2 ;;
auto) antdiv=1; antrx=0; anttx=0 ;;
esac
- config_get antenna "$device" antenna
+
[ -x "$(which gpioctl 2>/dev/null)" ] || antenna=
case "$antenna" in
[ -x "$(which gpioctl 2>/dev/null)" ] || antenna=
case "$antenna" in
-
internal
)
+
horizontal|vertical|auto
)
gpioctl "dirout" "$antgpio" >/dev/null 2>&1
gpioctl "set" "$antgpio" >/dev/null 2>&1
;;
external)
gpioctl "dirout" "$antgpio" >/dev/null 2>&1
gpioctl "clear" "$antgpio" >/dev/null 2>&1
gpioctl "dirout" "$antgpio" >/dev/null 2>&1
gpioctl "set" "$antgpio" >/dev/null 2>&1
;;
external)
gpioctl "dirout" "$antgpio" >/dev/null 2>&1
gpioctl "clear" "$antgpio" >/dev/null 2>&1
- antdiv=0
- antrx=1
- anttx=1
;;
esac
fi
;;
esac
fi
@@
-334,8
+328,7
@@
detect_atheros() {
NanoStation*)
EXTRA_DEV="
# Ubiquiti NanoStation features
NanoStation*)
EXTRA_DEV="
# Ubiquiti NanoStation features
- option antenna internal
- option polarity auto # (auto|horizontal|vertical)
+ option antenna auto # (auto|horizontal|vertical|external)
"
;;
esac
"
;;
esac