*) 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}"
}
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 && {
- ifconfig "$dev" down
+ [ -f "/var/run/wifi-${dev}.pid" ] &&
+ kill "$(cat "/var/run/wifi-${dev}.pid")"
+ ifconfig "$dev" down
unbridge "$dev"
wlanconfig "$dev" destroy
}
config_set "$vif" ifname "$ifname"
# only need to change freq band and channel on the first vif
- config_get agmode "$device" agmode
- [ -z "$agmode" ] && config_get agmode "$device" mode
+ config_get hwmode "$device" hwmode
+ [ -z "$hwmode" ] && config_get hwmode "$device" mode
pureg=0
- case "$agmode" in
- *b) agmode=11b;;
- *bg) agmode=11g;;
- *g) agmode=11g; pureg=1;;
- *gdt) agmode=11gdt;;
- *a) agmode=11a;;
- *adt) agmode=11adt;;
- *ast) agmode=11ast;;
- *fh) agmode=fh;;
- *) agmode=auto;;
+ case "$hwmode" in
+ *b) hwmode=11b;;
+ *bg) hwmode=11g;;
+ *g) hwmode=11g; pureg=1;;
+ *gdt) hwmode=11gdt;;
+ *a) hwmode=11a;;
+ *adt) hwmode=11adt;;
+ *ast) hwmode=11ast;;
+ *fh) hwmode=fh;;
+ *) hwmode=auto;;
esac
- iwpriv "$ifname" mode "$agmode"
+ iwpriv "$ifname" mode "$hwmode"
iwpriv "$ifname" pureg "$pureg"
[ "$first" = 1 ] && {
config_get antrx "$device" rxantenna
config_get anttx "$device" txantenna
config_get_bool softled "$device" softled 1
- config_get_bool gpioctl "$device" gpioctl
devname="$(cat /proc/sys/dev/$device/dev_name)"
antgpio=
case "$devname" in
- NanoStation2) antgpio=wifi; [ -n "$gpioctl" ] && gpioctl=0;;
+ NanoStation2) antgpio=7;;
NanoStation5) antgpio=1;;
esac
if [ -n "$antgpio" ]; then
[ -x "$(which gpioctl 2>/dev/null)" ] || antenna=
case "$antenna" in
horizontal|vertical|auto)
- if [ "$gpioctl" = "0" ]; then
- echo 0 >/sys/class/leds/$antgpio/brightness 2>&1
- else
- gpioctl "dirout" "$antgpio" >/dev/null 2>&1
- gpioctl "set" "$antgpio" >/dev/null 2>&1
- fi
+ gpioctl "dirout" "$antgpio" >/dev/null 2>&1
+ gpioctl "set" "$antgpio" >/dev/null 2>&1
;;
external)
- if [ "$gpioctl" = "0" ]; then
- echo 0 >/sys/class/leds/$antgpio/brightness
- else
- gpioctl "dirout" "$antgpio" >/dev/null 2>&1
- gpioctl "clear" "$antgpio" >/dev/null 2>&1
- fi
+ gpioctl "dirout" "$antgpio" >/dev/null 2>&1
+ gpioctl "clear" "$antgpio" >/dev/null 2>&1
;;
esac
fi
config_get distance "$device" distance
[ -n "$distance" ] && athctrl -i "$device" -d "$distance" >&-
- config_get txpwr "$vif" txpower
- [ -n "$txpwr" ] && iwconfig "$ifname" txpower "${txpwr%%.*}"
-
config_get rate "$vif" rate
[ -n "$rate" ] && iwconfig "$ifname" rate "${rate%%.*}"
esac
ifconfig "$ifname" up
+
+ # TXPower settings only work if device is up already
+ config_get txpwr "$vif" txpower
+ [ -n "$txpwr" ] && iwconfig "$ifname" txpower "${txpwr%%.*}"
+
local net_cfg bridge
net_cfg="$(find_net_config "$vif")"
[ -z "$net_cfg" ] || {
NanoStation*)
EXTRA_DEV="
# Ubiquiti NanoStation features
- option antenna internal
- option polarity auto # (auto|horizontal|vertical)
+ option antenna auto # (auto|horizontal|vertical|external)
"
;;
esac