[package] madwifi: change wireless ifname numbering schema
authorJo-Philipp Wich <jow@openwrt.org>
Sun, 6 Nov 2011 19:57:07 +0000 (19:57 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Sun, 6 Nov 2011 19:57:07 +0000 (19:57 +0000)
Instead of simply counting up until we hit a free iface, group ifnames by wiphy so that the first wlanX on a phy gets the phy number
and following ifaces an index-suffix, e.g. ath0 for network 1 on phy 1 and ath0-1 for network 2 on phy 1.
This fixes state var confusion when operating multiple radios and allows to reliably take down and restart one radio only, even if
the number of networks changes in between. This should, along with other changes in LuCI, fix #10335.

SVN-Revision: 28785

package/madwifi/files/lib/wifi/madwifi.sh

index 93e68f51e8b91ba7ee7feb2ab2139f7bd20c56ce..8a4572db609bd0163e7f6b5c5bb87f49b51e1028 100755 (executable)
@@ -31,14 +31,19 @@ scan_atheros() {
        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
@@ -57,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
@@ -205,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