aboutsummaryrefslogtreecommitdiffstats
path: root/package/network
diff options
context:
space:
mode:
authorMike Wilson <mikewse@hotmail.com>2020-07-20 22:25:33 +0200
committerDavid Bauer <mail@david-bauer.net>2023-03-28 14:19:33 +0200
commit8f27093ce784daad5a9b1c89f51d0a76a8bbb07b (patch)
treee243e4d5edc460dfe1202cc5f629e4448b6a3b72 /package/network
parent77f11d2772dcee35b4956d1d36d95b369b6b719c (diff)
downloadupstream-8f27093ce784daad5a9b1c89f51d0a76a8bbb07b.tar.gz
upstream-8f27093ce784daad5a9b1c89f51d0a76a8bbb07b.tar.bz2
upstream-8f27093ce784daad5a9b1c89f51d0a76a8bbb07b.zip
ncm: add error check and retry mechanism for gcom call
This patch solves the problem of receiving "error" responses when initially calling gcom. This avoids unnecessary NO_DEVICE failures. A retry loop retries the call after an "error" response within the specified delay. A successful response will continue with the connection immediately without waiting for max specified delay, bringing the interface up sooner. Signed-off-by: Mike Wilson <mikewse@hotmail.com>
Diffstat (limited to 'package/network')
-rw-r--r--package/network/utils/comgt/files/ncm.sh23
1 files changed, 19 insertions, 4 deletions
diff --git a/package/network/utils/comgt/files/ncm.sh b/package/network/utils/comgt/files/ncm.sh
index 2f36697487..dec058712d 100644
--- a/package/network/utils/comgt/files/ncm.sh
+++ b/package/network/utils/comgt/files/ncm.sh
@@ -86,10 +86,25 @@ proto_ncm_setup() {
return 1
}
- [ -n "$delay" ] && sleep "$delay"
-
- manufacturer=$(gcom -d "$device" -s /etc/gcom/getcardinfo.gcom | awk 'NF && $0 !~ /AT\+CGMI/ { sub(/\+CGMI: /,""); print tolower($1); exit; }')
- [ $? -ne 0 -o -z "$manufacturer" ] && {
+ start=$(date +%s)
+ while true; do
+ manufacturer=$(gcom -d "$device" -s /etc/gcom/getcardinfo.gcom | awk 'NF && $0 !~ /AT\+CGMI/ { sub(/\+CGMI: /,""); print tolower($1); exit; }')
+ [ "$manufacturer" = "error" ] && {
+ manufacturer=""
+ }
+ [ -n "$manufacturer" ] && {
+ break
+ }
+ [ -z "$delay" ] && {
+ break
+ }
+ sleep 1
+ elapsed=$(($(date +%s) - start))
+ [ "$elapsed" -gt "$delay" ] && {
+ break
+ }
+ done
+ [ -z "$manufacturer" ] && {
echo "Failed to get modem information"
proto_notify_error "$interface" GETINFO_FAILED
return 1