don't overwrite device default for fast frames closes #2321
[openwrt/openwrt.git] / package / madwifi / files / lib / wifi / madwifi.sh
index 1320e5643f36dd9c4ac74f880ab2808a3a879a69..83f35ab64e64969d73873a4d5a23c20ceddd2a67 100755 (executable)
@@ -71,6 +71,7 @@ disable_atheros() (
 )
 
 enable_atheros() {
+       local device="$1"
        config_get channel "$device" channel
        config_get vifs "$device" vifs
        
@@ -93,7 +94,7 @@ enable_atheros() {
 
                [ "$first" = 1 ] && {
                        # only need to change freq band and channel on the first vif
-                       config_get agmode "$device" mode
+                       config_get agmode "$device" agmode
                        pureg=0
                        case "$agmode" in
                                *b) agmode=11b;;
@@ -102,7 +103,7 @@ enable_atheros() {
                                *a) agmode=11a;;
                                *) agmode=auto;;
                        esac
-                       iwconfig "$ifname" channel 0 >/dev/null 2>/dev/null 
+                       iwconfig "$ifname" channel "$channel" >/dev/null 2>/dev/null 
                        ifconfig "$ifname" up
                        sleep 1
                        iwpriv "$ifname" mode "$agmode"
@@ -113,8 +114,10 @@ enable_atheros() {
                config_get_bool hidden "$vif" hidden 0
                iwpriv "$ifname" hide_ssid "$hidden"
 
-               config_get_bool ff "$vif" ff 0
-               iwpriv "$ifname" ff "$ff"
+               config_get ff "$vif" ff
+               if [ -n "$ff" ]; then
+                       iwpriv "$ifname" ff "$ff"
+               fi
 
                config_get wds "$vif" wds
                case "$wds" in
@@ -156,10 +159,8 @@ enable_atheros() {
                esac
                config_get ssid "$vif" ssid
 
-               [ "$mode" = "sta" ] && {
-                       config_get_bool bgscan "$vif" bgscan 1
-                       iwpriv "$ifname" bgscan "$bgscan"
-               }
+               config_get_bool bgscan "$vif" bgscan 0
+               iwpriv "$ifname" bgscan "$bgscan"
 
                config_get_bool antdiv "$device" diversity 1
                sysctl -w dev."$device".diversity="$antdiv" >&-
@@ -226,10 +227,15 @@ enable_atheros() {
                                        PSK|psk|PSK2|psk2)
                                                case "$enc" in
                                                        PSK|psk)
-                                                               proto='proto=WPA';;
+                                                               proto='proto=WPA'
+                                                               passphrase="${key}"
+                                                               ;;
                                                        PSK2|psk2)
-                                                               proto='proto=RSN';;
+                                                               proto='proto=RSN'
+                                                               passphrase=`wpa_passphrase ${ssid} "${key}" | grep psk | grep -v \#| cut -d= -f2`
+                                                               ;;
                                                esac
+                                               
                                                cat > /var/run/wpa_supplicant-$ifname.conf <<EOF
 ctrl_interface=/var/run/wpa_supplicant
 network={
@@ -237,7 +243,7 @@ network={
        ssid="$ssid"
        key_mgmt=WPA-PSK
        $proto
-       psk="$key"
+       psk="$passphrase"
 }
 EOF
                                        ;;