X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=package%2Fmadwifi%2Ffiles%2Flib%2Fwifi%2Fmadwifi.sh;h=1188e4f87d363ebdb21f4169aba3498db7dce276;hb=55b491c50f01b5f6f699e35c33d37d5f71e00a22;hp=df345316b5205f8bdc107323a44adcab8eb83866;hpb=30b80568d3cc8f5943f13801bf7626ca6150364b;p=openwrt%2Fsvn-archive%2Farchive.git diff --git a/package/madwifi/files/lib/wifi/madwifi.sh b/package/madwifi/files/lib/wifi/madwifi.sh index df345316b5..1188e4f87d 100755 --- a/package/madwifi/files/lib/wifi/madwifi.sh +++ b/package/madwifi/files/lib/wifi/madwifi.sh @@ -85,7 +85,10 @@ enable_atheros() { config_get eap_type "$vif" eap_type config_get mode "$vif" mode - [ "$mode" = sta ] && config_get nosbeacon "$device" nosbeacon + case "$mode" in + sta) config_get nosbeacon "$device" nosbeacon;; + adhoc) config_get nosbeacon "$vif" sw_merge;; + esac config_get ifname "$vif" ifname ifname=$(wlanconfig "$ifname" create wlandev "$device" wlanmode "$mode" ${nosbeacon:+nosbeacon}) @@ -171,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%%.*}" @@ -297,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 <