X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/f440a949fb433c3b093740a5ca8e58d0d3fae593..071f766b1ddbdd19a8c97ed2773e892c039a35d1:/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 bd93d4736..2e3732551 100755 --- a/package/madwifi/files/lib/wifi/madwifi.sh +++ b/package/madwifi/files/lib/wifi/madwifi.sh @@ -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 }