aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Schiller <ms@dev.tdt.de>2019-08-28 07:24:33 +0200
committerDaniel Golle <daniel@makrotopia.org>2020-11-24 15:18:16 +0000
commitb4b829fe64908d0f8743175e7d3ce05cdb3177d8 (patch)
tree5e627bc0b7c919179df9f9f7e0e50bcff9c0a079
parentbc64b9c32e00bf398f29f360fd2286d26ef3b7d5 (diff)
downloadupstream-b4b829fe64908d0f8743175e7d3ce05cdb3177d8.tar.gz
upstream-b4b829fe64908d0f8743175e7d3ce05cdb3177d8.tar.bz2
upstream-b4b829fe64908d0f8743175e7d3ce05cdb3177d8.zip
uqmi: set plmn only if necessary
Setting the plmn to '0' (auto) will implicitly lead to a (delayed) network re-registration, which could further lead to some timing related issues in the qmi proto handler. On the other hand, if you switch back from manual plmn selection to auto mode you have to set it to '0', because this setting is permanently "saved" in the wwan module. Conclusion: If plmn is configured, check if it's already set euqally in the module. If so, do nothing. Otherwise set it. Signed-off-by: Martin Schiller <ms@dev.tdt.de> Signed-off-by: Daniel Golle <daniel@makrotopia.org>
-rw-r--r--package/network/utils/uqmi/Makefile2
-rwxr-xr-xpackage/network/utils/uqmi/files/lib/netifd/proto/qmi.sh28
2 files changed, 22 insertions, 8 deletions
diff --git a/package/network/utils/uqmi/Makefile b/package/network/utils/uqmi/Makefile
index c892c3f8e8..68958a3729 100644
--- a/package/network/utils/uqmi/Makefile
+++ b/package/network/utils/uqmi/Makefile
@@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=uqmi
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/uqmi.git
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 13a4fc9611..a6c785eb56 100755
--- a/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh
+++ b/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh
@@ -30,7 +30,7 @@ proto_qmi_init_config() {
proto_qmi_setup() {
local interface="$1"
- local dataformat connstat
+ local dataformat connstat plmn_mode mcc mnc
local device apn auth username password pincode delay modes pdptype
local profile dhcp dhcpv6 autoconnect plmn timeout mtu $PROTO_DEFAULT_OPTIONS
local ip4table ip6table
@@ -152,24 +152,38 @@ proto_qmi_setup() {
esac
fi
- [ -n "$plmn" ] && {
- local mcc mnc
- if [ "$plmn" = 0 ]; then
+ if [ -n "$plmn" ]; then
+ json_load "$(uqmi -s -d "$device" --get-plmn)"
+ json_get_var plmn_mode mode
+ json_get_vars mcc mnc || {
mcc=0
mnc=0
- echo "Setting PLMN to auto"
- else
+ }
+
+ if [ "$plmn" = "0" ]; then
+ if [ "$plmn_mode" != "automatic" ]; then
+ mcc=0
+ mnc=0
+ echo "Setting PLMN to auto"
+ fi
+ elif [ "$mcc" -ne "${plmn:0:3}" -o "$mnc" -ne "${plmn:3}" ]; then
mcc=${plmn:0:3}
mnc=${plmn:3}
echo "Setting PLMN to $plmn"
+ else
+ mcc=""
+ mnc=""
fi
+ fi
+
+ if [ -n "$mcc" -a -n "$mnc" ]; then
uqmi -s -d "$device" --set-plmn --mcc "$mcc" --mnc "$mnc" > /dev/null 2>&1 || {
echo "Unable to set PLMN"
proto_notify_error "$interface" PLMN_FAILED
proto_block_restart "$interface"
return 1
}
- }
+ fi
# Cleanup current state if any
uqmi -s -d "$device" --stop-network 0xffffffff --autoconnect > /dev/null 2>&1