X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/4b7f3bb250578325ca4c8ffb8d476d18c84cfbd5..244e2944c6b2f4efaf7d4375951ae2cf503823cd:/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 7056611f6..b2bec7d25 100755 --- a/package/madwifi/files/lib/wifi/madwifi.sh +++ b/package/madwifi/files/lib/wifi/madwifi.sh @@ -90,11 +90,20 @@ enable_atheros() { config_get_bool softled "$device" softled 1 devname="$(cat /proc/sys/dev/$device/dev_name)" - antgpio= + local antgpio= + local invert= case "$devname" in - NanoStation2) antgpio=7;; - NanoStation5) antgpio=1;; + NanoStation2) antgpio=7; invert=1;; + NanoStation5) antgpio=1; invert=1;; + "NanoStation Loco2") antgpio=2;; esac + if [ -n "$invert" ]; then + _set="clear" + _clear="set" + else + _set="set" + _clear="clear" + fi if [ -n "$antgpio" ]; then softled=0 config_get antenna "$device" antenna @@ -106,14 +115,13 @@ enable_atheros() { esac [ -x "$(which gpioctl 2>/dev/null)" ] || antenna= + gpioctl "dirout" "$antgpio" >/dev/null 2>&1 case "$antenna" in horizontal|vertical|auto) - gpioctl "dirout" "$antgpio" >/dev/null 2>&1 - gpioctl "set" "$antgpio" >/dev/null 2>&1 + gpioctl "$_clear" "$antgpio" >/dev/null 2>&1 ;; external) - gpioctl "dirout" "$antgpio" >/dev/null 2>&1 - gpioctl "clear" "$antgpio" >/dev/null 2>&1 + gpioctl "$_set" "$antgpio" >/dev/null 2>&1 ;; esac fi @@ -126,7 +134,6 @@ enable_atheros() { config_get distance "$device" distance [ -n "$distance" ] && sysctl -w dev."$device".distance="$distance" >&- - local first=1 for vif in $vifs; do local start_hostapd= vif_txpower= nosbeacon= config_get ifname "$vif" ifname @@ -135,10 +142,11 @@ enable_atheros() { config_get mode "$vif" mode case "$mode" in - sta) config_get nosbeacon "$device" nosbeacon;; - adhoc) config_get nosbeacon "$vif" sw_merge;; + sta) config_get_bool nosbeacon "$device" nosbeacon;; + adhoc) config_get_bool nosbeacon "$vif" sw_merge 1;; esac + [ "$nosbeacon" = 1 ] || nosbeacon="" ifname=$(wlanconfig "$ifname" create wlandev "$device" wlanmode "$mode" ${nosbeacon:+nosbeacon}) [ $? -ne 0 ] && { echo "enable_atheros($device): Failed to set up $mode vif $ifname" >&2 @@ -146,29 +154,26 @@ enable_atheros() { } config_set "$vif" ifname "$ifname" - # only need to change freq band and channel on the first vif - [ "$first" = 1 ] && { config_get hwmode "$device" hwmode [ -z "$hwmode" ] && config_get hwmode "$device" mode - pureg=0 - 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 "$hwmode" - iwpriv "$ifname" pureg "$pureg" - - iwconfig "$ifname" channel "$channel" >/dev/null 2>/dev/null - } - + pureg=0 + 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 "$hwmode" + iwpriv "$ifname" pureg "$pureg" + + iwconfig "$ifname" channel "$channel" >/dev/null 2>/dev/null + config_get_bool hidden "$vif" hidden 0 iwpriv "$ifname" hide_ssid "$hidden" @@ -182,7 +187,7 @@ enable_atheros() { 1|on|enabled) wds=1;; *) wds=0;; esac - iwpriv "$ifname" wds "$wds" + iwpriv "$ifname" wds "$wds" >/dev/null 2>&1 [ "$mode" = ap -a "$wds" = 1 ] && { config_get_bool wdssep "$vif" wdssep 1 @@ -217,6 +222,9 @@ enable_atheros() { ;; esac + config_get_bool uapsd "$vif" uapsd 0 + iwpriv "$ifname" uapsd "$uapsd" + config_get_bool bgscan "$vif" bgscan [ -n "$bgscan" ] && iwpriv "$ifname" bgscan "$bgscan" @@ -232,8 +240,8 @@ enable_atheros() { config_get rts "$vif" rts [ -n "$rts" ] && iwconfig "$ifname" rts "${rts%%.*}" - config_get_bool comp "$vif" compression - [ -n "$comp" ] && iwpriv "$ifname" compression "$comp" + config_get_bool comp "$vif" compression 0 + iwpriv "$ifname" compression "$comp" >/dev/null 2>&1 config_get_bool minrate "$vif" minrate [ -n "$minrate" ] && iwpriv "$ifname" minrate "$minrate" @@ -339,7 +347,6 @@ enable_atheros() { fi ;; esac - first=0 done }