uqmi: do not block proto handler if modem is unable to registrate
authorFlorian Eckert <fe@dev.tdt.de>
Thu, 12 Apr 2018 11:20:49 +0000 (13:20 +0200)
committerJo-Philipp Wich <jo@mein.io>
Tue, 18 Dec 2018 16:22:06 +0000 (17:22 +0100)
QMI proto setup-handler will wait forever if it is unable to registrate to
the mobile network. To fix this stop polling network registration status
and notify netifd. Netifd will generate then a "ifup-failed" ACTION.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
(backported from dec1bfa0f48d43174921d1a1357a4842f9ba0cf6)

package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh

index 560c0b9459e71aac8710c76187e6b786e13ffc4c..f1a939763a141601ecc4c170ede6889363b11359 100755 (executable)
@@ -125,9 +125,18 @@ proto_qmi_setup() {
        uqmi -s -d "$device" --sync > /dev/null 2>&1
 
        echo "Waiting for network registration"
+       local registration_timeout=0
        while uqmi -s -d "$device" --get-serving-system | grep '"searching"' > /dev/null; do
                [ -e "$device" ] || return 1
-               sleep 5;
+               if [ "$registration_timeout" -lt "$timeout" ]; then
+                       let registration_timeout++
+                       sleep 1;
+               else
+                       echo "Network registration failed"
+                       proto_notify_error "$interface" NETWORK_REGISTRATION_FAILED
+                       proto_block_restart "$interface"
+                       return 1
+               fi
        done
 
        [ -n "$modes" ] && uqmi -s -d "$device" --set-network-modes "$modes" > /dev/null 2>&1