net: uqmi: fix blocking in endless loops when unplugging device
authorAlexandru Ardelean <ardeleanalex@gmail.com>
Thu, 15 Feb 2018 14:15:58 +0000 (15:15 +0100)
committerJohn Crispin <john@phrozen.org>
Sun, 18 Feb 2018 08:34:32 +0000 (09:34 +0100)
If you unplug a QMI device, the /dev/cdc-wdmX device
disappears but uqmi will continue to poll it endlessly.

Then, when you plug it back, you have 2 uqmi processes,
and that's bad, because 2 processes talking QMI to the
same device [and the same time] doesn't seem to work well.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh

index 6f11933a9e510ca18b9339528a561e2e75819fda..9c953ea6975798caa69e04217ec9ae01ff9667c9 100755 (executable)
@@ -65,6 +65,7 @@ proto_qmi_setup() {
        [ -n "$delay" ] && sleep "$delay"
 
        while uqmi -s -d "$device" --get-pin-status | grep '"UIM uninitialized"' > /dev/null; do
+               [ -e "$device" ] || return 1
                sleep 1;
        done
 
@@ -102,6 +103,7 @@ proto_qmi_setup() {
 
        echo "Waiting for network registration"
        while uqmi -s -d "$device" --get-serving-system | grep '"searching"' > /dev/null; do
+               [ -e "$device" ] || return 1
                sleep 5;
        done