Wait up to 3 seconds for the Quantenna interface.
Fixes b/33211748 and b/33280156.
Change-Id: I75c96b5f47d439bfef9770ad52d5a97b833a6b3b
diff --git a/fs/skeleton/etc/init.d/network b/fs/skeleton/etc/init.d/network
index 2b15d8e..3899412 100755
--- a/fs/skeleton/etc/init.d/network
+++ b/fs/skeleton/etc/init.d/network
@@ -420,7 +420,7 @@
i=0
while true; do
if ! interface_exists wlan"$i"; then
- echo "add wlan$i 3" >/sys/class/net/quantenna/vlan
+ add_quantenna_interface "wlan$i" 3
break
fi
i=$((i+1))
diff --git a/fs/skeleton/etc/utils.sh b/fs/skeleton/etc/utils.sh
index e4f4b9c..17470b1 100644
--- a/fs/skeleton/etc/utils.sh
+++ b/fs/skeleton/etc/utils.sh
@@ -265,6 +265,18 @@
[ -e "/sys/class/net/$1" ]
}
+add_quantenna_interface() {
+ local interface=$1
+ local vlan=$2
+ echo "add $interface $vlan" >/sys/class/net/quantenna/vlan
+ for i in `seq 12`; do
+ if interface_exists "$interface"; then
+ break
+ fi
+ sleep 0.25
+ done
+}
+
is_quantenna_interface() {
# Check for "$1 " to prevent "wlanX" from matching "wlanX_portal".
filecontains "$1 " /sys/class/net/quantenna/vlan >/dev/null 2>&1
diff --git a/fs/skeleton/sbin/hotplug b/fs/skeleton/sbin/hotplug
index dbb0da8..7cec68c 100755
--- a/fs/skeleton/sbin/hotplug
+++ b/fs/skeleton/sbin/hotplug
@@ -18,7 +18,7 @@
local client_interface=$(echo "$interface" | sed s/^wlan/wcli/)
if ! interface_exists "$client_interface"; then
if is_quantenna_interface "$interface"; then
- echo "add $client_interface 2" >/sys/class/net/quantenna/vlan
+ add_quantenna_interface "$client_interface" 2
mac=$(get_locally_administered_mac_addr "$mac")
else
local phy=$(find_phy_for_interface "$interface")
@@ -76,7 +76,7 @@
if ! interface_exists "$secondary_interface"; then
if is_quantenna_interface "$interface"; then
- echo "add $secondary_interface 4" >/sys/class/net/quantenna/vlan
+ add_quantenna_interface "$secondary_interface" 4
mac=$(get_locally_administered_mac_addr "$mac")
else
local phy=$(find_phy_for_interface "$interface")