madwifi: modify madwifi.sh to support IBSS WPA-NONE
[openwrt.git] / package / madwifi / files / lib / wifi / madwifi.sh
index bd93d47..2e37325 100755 (executable)
@@ -28,15 +28,22 @@ find_atheros_phy() {
 scan_atheros() {
        local device="$1"
        local wds
-       local adhoc ahdemo sta ap monitor
+       local adhoc ahdemo sta ap monitor disabled
 
        [ ${device%[0-9]} = "wifi" ] && config_set "$device" phy "$device"
+
+       local ifidx=0
        
        config_get vifs "$device" vifs
        for vif in $vifs; do
-       
+               config_get_bool disabled "$vif" disabled 0
+               [ $disabled = 0 ] || continue
+
+               local vifname
+               [ $ifidx -gt 0 ] && vifname="ath${device#radio}-$ifidx" || vifname="ath${device#radio}"
+
                config_get ifname "$vif" ifname
-               config_set "$vif" ifname "${ifname:-ath}"
+               config_set "$vif" ifname "${ifname:-$vifname}"
                
                config_get mode "$vif" mode
                case "$mode" in
@@ -55,6 +62,8 @@ scan_atheros() {
                        ;;
                        *) echo "$device($vif): Invalid mode, ignored."; continue;;
                esac
+
+               ifidx=$(($ifidx + 1))
        done
 
        case "${adhoc:+1}:${sta:+1}:${ap:+1}" in
@@ -203,7 +212,7 @@ enable_atheros() {
                esac
 
                [ "$nosbeacon" = 1 ] || nosbeacon=""
-               ifname=$(wlanconfig "$ifname" create wlandev "$phy" wlanmode "$mode" ${nosbeacon:+nosbeacon})
+               ifname=$(wlanconfig "$ifname" create nounit wlandev "$phy" wlanmode "$mode" ${nosbeacon:+nosbeacon})
                [ $? -ne 0 ] && {
                        echo "enable_atheros($device): Failed to set up $mode vif $ifname" >&2
                        continue
@@ -398,7 +407,7 @@ enable_atheros() {
                        ;;
                        wds|sta)
                                if eval "type wpa_supplicant_setup_vif" 2>/dev/null >/dev/null; then
-                                       wpa_supplicant_setup_vif "$vif" madwifi || {
+                                       wpa_supplicant_setup_vif "$vif" wext || {
                                                echo "enable_atheros($device): Failed to set up wpa_supplicant for interface $ifname" >&2
                                                ifconfig "$ifname" down
                                                wlanconfig "$ifname" destroy
@@ -406,6 +415,15 @@ enable_atheros() {
                                        }
                                fi
                        ;;
+                       adhoc)
+                               if eval "type wpa_supplicant_setup_vif" 2>/dev/null >/dev/null; then
+                                       wpa_supplicant_setup_vif "$vif" madwifi || {
+                                               echo "enable_atheros($device): Failed to set up wpa"
+                                               ifconfig "$ifname" down
+                                               wlanconfig "$ifname" destroy
+                                               continue
+                                       }
+                               fi
                esac
        done
 }
This page took 0.025241 seconds and 4 git commands to generate.