From ee875810ebb42843655e6e5f1b0fee5b4f31edb6 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Sun, 6 Nov 2011 19:57:07 +0000 Subject: 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 --- package/madwifi/files/lib/wifi/madwifi.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'package/madwifi/files') diff --git a/package/madwifi/files/lib/wifi/madwifi.sh b/package/madwifi/files/lib/wifi/madwifi.sh index 93e68f5..8a4572d 100755 --- a/package/madwifi/files/lib/wifi/madwifi.sh +++ b/package/madwifi/files/lib/wifi/madwifi.sh @@ -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 -- cgit v1.1