busybox: enable readlink (with -f support)
[openwrt.git] / package / mac80211 / files / lib / wifi / mac80211.sh
index ff5470b..1b0bea7 100644 (file)
@@ -295,6 +295,7 @@ enable_mac80211() {
        config_get distance "$device" distance
        config_get txantenna "$device" txantenna all
        config_get rxantenna "$device" rxantenna all
+       config_get antenna_gain "$device" antenna_gain 0
        config_get frag "$device" frag
        config_get rts "$device" rts
        find_mac80211_phy "$device" || return 0
@@ -312,15 +313,16 @@ enable_mac80211() {
                }
        }
 
-       config_get ath9k_chanbw "$device" ath9k_chanbw
-       [ -n "$ath9k_chanbw" -a -d /sys/kernel/debug/ieee80211/$phy/ath9k ] && echo "$ath9k_chanbw" > /sys/kernel/debug/ieee80211/$phy/ath9k/chanbw
+       config_get chanbw "$device" chanbw
+       [ -n "$chanbw" -a -d /sys/kernel/debug/ieee80211/$phy/ath9k ] && echo "$chanbw" > /sys/kernel/debug/ieee80211/$phy/ath9k/chanbw
+       [ -n "$chanbw" -a -d /sys/kernel/debug/ieee80211/$phy/ath5k ] && echo "$chanbw" > /sys/kernel/debug/ieee80211/$phy/ath5k/bwmode
 
-       [ -n "$country" ] && iw reg set "$country"
        [ "$channel" = "auto" -o "$channel" = "0" ] || {
                fixed=1
        }
 
        iw phy "$phy" set antenna $txantenna $rxantenna >/dev/null 2>&1
+       iw phy "$phy" set antenna_gain $antenna_gain
 
        [ -n "$distance" ] && iw phy "$phy" set distance "$distance"
        [ -n "$frag" ] && iw phy "$phy" set frag "${frag%%.*}"
@@ -445,8 +447,26 @@ enable_mac80211() {
                                config_get encryption "$vif" encryption
                                config_get key "$vif" key 1
                                config_get mcast_rate "$vif" mcast_rate
+                               config_get htmode "$device" htmode
+                               case "$htmode" in
+                                       HT20|HT40+|HT40-) ;;
+                                       *) htmode= ;;
+                               esac
+
 
                                local keyspec=""
+                               [ "$encryption" == "psk" -o "$encryption" == "psk2" ] && {
+                                       if eval "type wpa_supplicant_setup_vif" 2>/dev/null >/dev/null; then
+                                               wpa_supplicant_setup_vif "$vif" nl80211 "${hostapd_ctrl:+-H $hostapd_ctrl}" $freq $htmode || {
+                                                       echo "enable_mac80211($device): Failed to set up wpa_supplicant for interface $ifname" >&2
+                                                       # make sure this wifi interface won't accidentally stay open without encryption
+                                                       ifconfig "$ifname" down
+                                               }
+                                               # wpa_supplicant will bring the iface up
+                                               continue
+                                       fi
+                               }
+
                                [ "$encryption" == "wep" ] && {
                                        case "$key" in
                                                [1234])
@@ -484,12 +504,6 @@ enable_mac80211() {
                                        [ "$mcsub" -gt 0 ] && mcval="$mcval.$mcsub"
                                }
 
-                               config_get htmode "$device" htmode
-                               case "$htmode" in
-                                       HT20|HT40+|HT40-) ;;
-                                       *) htmode= ;;
-                               esac
-
                                iw dev "$ifname" ibss join "$ssid" $freq $htmode \
                                        ${fixed:+fixed-freq} $bssid \
                                        ${beacon_int:+beacon-interval $beacon_int} \