From acedce1d79e238be7ad8fcd8f82ef5a7db0bc929 Mon Sep 17 00:00:00 2001
From: Thomas Equeter <tequeter@users.noreply.github.com>
Date: Thu, 16 Aug 2018 21:39:05 +0200
Subject: [PATCH] uqmi: wait for the control device too

The control device /dev/cdc-wdm0 is not available immediately on the
D-Link DWR-921 Rev.C3, therefore the wwan interface fails to start at
boot with a "The specified control device does not exist" error.

This patch alters /lib/netifd/proto/qmi.sh to wait for
network.wwan.delay earlier, before checking for the control device,
instead of just before interacting with the modem.

One still has to use network.wwan.proto='qmi', as the "wwan" proto
performs that sort of check before any delay is possible, failing with a
"No valid device was found" error.

Signed-off-by: Thomas Equeter <tequeter@users.noreply.github.com>
---
 package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh b/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh
index 38d83ace5f..05055b1484 100755
--- a/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh
+++ b/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh
@@ -44,6 +44,8 @@ proto_qmi_setup() {
 		return 1
 	}
 
+	[ -n "$delay" ] && sleep "$delay"
+
 	device="$(readlink -f $device)"
 	[ -c "$device" ] || {
 		echo "The specified control device does not exist"
@@ -62,8 +64,6 @@ proto_qmi_setup() {
 		return 1
 	}
 
-	[ -n "$delay" ] && sleep "$delay"
-
 	while uqmi -s -d "$device" --get-pin-status | grep '"UIM uninitialized"' > /dev/null; do
 		[ -e "$device" ] || return 1
 		sleep 1;
-- 
2.30.2