[openwrt/openwrt] uqmi: set plmn only if necessary
LEDE Commits
lede-commits at lists.infradead.org
Tue Nov 24 10:19:27 EST 2020
dangole pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/b4b829fe64908d0f8743175e7d3ce05cdb3177d8
commit b4b829fe64908d0f8743175e7d3ce05cdb3177d8
Author: Martin Schiller <ms at dev.tdt.de>
AuthorDate: Wed Aug 28 07:24:33 2019 +0200
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 at dev.tdt.de>
Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
package/network/utils/uqmi/Makefile | 2 +-
.../utils/uqmi/files/lib/netifd/proto/qmi.sh | 28 ++++++++++++++++------
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
More information about the lede-commits
mailing list