From 14d0041023cb4fabffd31f69519f82acd4764baa Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Thu, 23 Oct 2008 01:07:50 +0000 Subject: [PATCH] implement uci config option for the nanostation antenna/polarity control (ns2 and ns5 supported) SVN-Revision: 13028 --- package/madwifi/files/lib/wifi/madwifi.sh | 55 +++++++++++++++++++---- 1 file changed, 47 insertions(+), 8 deletions(-) diff --git a/package/madwifi/files/lib/wifi/madwifi.sh b/package/madwifi/files/lib/wifi/madwifi.sh index e4e99822bd..1188e4f87d 100755 --- a/package/madwifi/files/lib/wifi/madwifi.sh +++ b/package/madwifi/files/lib/wifi/madwifi.sh @@ -174,20 +174,49 @@ enable_atheros() { [ -n "$bgscan" ] && iwpriv "$ifname" bgscan "$bgscan" config_get_bool antdiv "$device" diversity - [ -n "$antdiv" ] && sysctl -w dev."$device".diversity="$antdiv" >&- - config_get antrx "$device" rxantenna - [ -n "$antrx" ] && sysctl -w dev."$device".rxantenna="$antrx" >&- - config_get anttx "$device" txantenna + config_get_bool softled "$device" softled 1 + + devname="$(cat /proc/sys/dev/$device/dev_name)" + antgpio= + case "$devname" in + NanoStation2) antgpio=7;; + NanoStation5) antgpio=1;; + esac + if [ -n "$antgpio" ]; then + softled=0 + config_get polarity "$device" polarity + case "$antenna" in + 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 + internal) + 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 + + [ -n "$antdiv" ] && sysctl -w dev."$device".diversity="$antdiv" >&- + [ -n "$antrx" ] && sysctl -w dev."$device".rxantenna="$antrx" >&- [ -n "$anttx" ] && sysctl -w dev."$device".txantenna="$anttx" >&- + [ -n "$softled" ] && sysctl -w dev."$device".softled="$softled" >&- config_get distance "$device" distance [ -n "$distance" ] && athctrl -i "$device" -d "$distance" >&- - config_get_bool softled "$device" softled 1 - [ -n "$softled" ] && sysctl -w dev."$device".softled="$softled" >&- - config_get txpwr "$vif" txpower [ -n "$txpwr" ] && iwconfig "$ifname" txpower "${txpwr%%.*}" @@ -300,12 +329,22 @@ detect_atheros() { [ -d ath ] || return for dev in $(ls -d wifi* 2>&-); do config_get type "$dev" type + devname="$(cat /proc/sys/dev/$dev/dev_name)" + case "$devname" in + NanoStation*) + EXTRA_DEV=" +# Ubiquiti NanoStation features + option antenna internal + option polarity auto # (auto|horizontal|vertical) +" + ;; + esac [ "$type" = atheros ] && return cat <