wpa_supplicant: add more parameters
authorJohn Crispin <john@openwrt.org>
Tue, 24 Jul 2012 23:07:15 +0000 (23:07 +0000)
committerJohn Crispin <john@openwrt.org>
Tue, 24 Jul 2012 23:07:15 +0000 (23:07 +0000)
Signed-off-by: Antonio Quartulli <ordex@autistici.org>
SVN-Revision: 32829

package/hostapd/files/wpa_supplicant.sh
package/mac80211/files/lib/wifi/mac80211.sh

index ed6597c2598fb7d2c60bc56f29275fc35c88bd82..6f89c646aab12212f78f7267ba572f025f93845f 100644 (file)
@@ -4,6 +4,8 @@ wpa_supplicant_setup_vif() {
        local key="$key"
        local options="$3"
        local freq=""
+       local ap_scan=""
+       local scan_ssid="1"
        [ -n "$4" ] && freq="frequency=$4"
 
        # make sure we have the encryption type and the psk
@@ -30,7 +32,11 @@ wpa_supplicant_setup_vif() {
                echo "wpa_supplicant_setup_vif($ifname): Refusing to bridge $mode mode interface"
                return 1
        }
-       [ "$mode" = "adhoc" ] && modestr="mode=1"
+       [ "$mode" = "adhoc" ] && {
+               modestr="mode=1"
+               scan_ssid="0"
+               ap_scan="ap_scan=2"
+       }
 
        key_mgmt='NONE'
        case "$enc" in
@@ -117,22 +123,48 @@ wpa_supplicant_setup_vif() {
                ;;
        esac
 
+       local fixed_freq bssid1 beacon_interval brates mrate
        config_get ifname "$vif" ifname
        config_get bridge "$vif" bridge
-       config_get ssid "$vif" ssid
-       config_get bssid "$vif" bssid
-       bssid=${bssid:+"bssid=$bssid"}
+       bssid1=${bssid:+"bssid=$bssid"}
+       beacon_interval=${beacon_int:+"beacon_interval=$beacon_int"}
+
+       local br brval brsub brstr
+       [ -n "$basic_rate_list" ] && {
+               for br in $basic_rate_list; do
+                       brval="$(($br / 1000))"
+                       brsub="$((($br / 100) % 10))"
+                       [ "$brsub" -gt 0 ] && brval="$brval.$brsub"
+                       [ -n "$brstr" ] && brstr="$brstr,"
+                       brstr="$brstr$brval"
+               done
+               brates=${basic_rate_list:+"rates=$brstr"}
+       }
+
+       local mcval=""
+       [ -n "$mcast_rate" ] && {
+               mcval="$(($mcast_rate / 1000))"
+               mcsub="$(( ($mcast_rate / 100) % 10 ))"
+               [ "$mcsub" -gt 0 ] && mcval="$mcval.$mcsub"
+               mrate=${mcast_rate:+"mcast_rate=$mcval"}
+       }
+
        rm -rf /var/run/wpa_supplicant-$ifname
        cat > /var/run/wpa_supplicant-$ifname.conf <<EOF
 ctrl_interface=/var/run/wpa_supplicant-$ifname
+$ap_scan
 network={
        $modestr
-       scan_ssid=1
+       scan_ssid=$scan_ssid
        ssid="$ssid"
-       $bssid
+       $bssid1
        key_mgmt=$key_mgmt
        $proto
        $freq
+       ${fixed:+"fixed_freq=1"}
+       $beacon_interval
+       $brates
+       $mrate
        $ieee80211w
        $passphrase
        $pairwise
index 6b907b6a2fc2b1aea1e7df49eccd7e089f78a327..97fd0507445e3fe7b5cc67e0017262bb701b5083 100644 (file)
@@ -453,8 +453,9 @@ enable_mac80211() {
                                                        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
-                                                       continue
                                                }
+                                               # wpa_supplicant will bring the iface up
+                                               continue
                                        fi
                                }