Browse Source

madwifi: change wireless ifname numbering schema 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
Jo-Philipp Wich 14 years ago
parent
commit
ee875810eb
1 changed files with 9 additions and 2 deletions
  1. 9 2
      package/madwifi/files/lib/wifi/madwifi.sh

+ 9 - 2
package/madwifi/files/lib/wifi/madwifi.sh

@@ -31,14 +31,19 @@ scan_atheros() {
 	local adhoc ahdemo sta ap monitor disabled
 	local adhoc ahdemo sta ap monitor disabled
 
 
 	[ ${device%[0-9]} = "wifi" ] && config_set "$device" phy "$device"
 	[ ${device%[0-9]} = "wifi" ] && config_set "$device" phy "$device"
+
+	local ifidx=0
 	
 	
 	config_get vifs "$device" vifs
 	config_get vifs "$device" vifs
 	for vif in $vifs; do
 	for vif in $vifs; do
 		config_get_bool disabled "$vif" disabled 0
 		config_get_bool disabled "$vif" disabled 0
 		[ $disabled = 0 ] || continue
 		[ $disabled = 0 ] || continue
 
 
+		local vifname
+		[ $ifidx -gt 0 ] && vifname="ath${device#radio}-$ifidx" || vifname="ath${device#radio}"
+
 		config_get ifname "$vif" ifname
 		config_get ifname "$vif" ifname
-		config_set "$vif" ifname "${ifname:-ath}"
+		config_set "$vif" ifname "${ifname:-$vifname}"
 		
 		
 		config_get mode "$vif" mode
 		config_get mode "$vif" mode
 		case "$mode" in
 		case "$mode" in
@@ -57,6 +62,8 @@ scan_atheros() {
 			;;
 			;;
 			*) echo "$device($vif): Invalid mode, ignored."; continue;;
 			*) echo "$device($vif): Invalid mode, ignored."; continue;;
 		esac
 		esac
+
+		ifidx=$(($ifidx + 1))
 	done
 	done
 
 
 	case "${adhoc:+1}:${sta:+1}:${ap:+1}" in
 	case "${adhoc:+1}:${sta:+1}:${ap:+1}" in
@@ -205,7 +212,7 @@ enable_atheros() {
 		esac
 		esac
 
 
 		[ "$nosbeacon" = 1 ] || nosbeacon=""
 		[ "$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 ] && {
 		[ $? -ne 0 ] && {
 			echo "enable_atheros($device): Failed to set up $mode vif $ifname" >&2
 			echo "enable_atheros($device): Failed to set up $mode vif $ifname" >&2
 			continue
 			continue