[openwrt/openwrt] uqmi: fix raw-ip mode for newer lte modems

LEDE Commits lede-commits at lists.infradead.org
Mon Jan 15 06:30:58 PST 2018


jow pushed a commit to openwrt/openwrt.git, branch master:
https://git.lede-project.org/7488be701029a86259dcd297a3c665eb65bdac6e

commit 7488be701029a86259dcd297a3c665eb65bdac6e
Author: Koen Vandeputte <koen.vandeputte at ncentric.com>
AuthorDate: Mon Nov 27 18:31:30 2017 +0100

    uqmi: fix raw-ip mode for newer lte modems
    
    Some newer LTE modems, like the MC7455 or EC25-E do not support
    "802.3" mode, and will stay in "raw-ip" regardless of the mode being
    set.
    
    In this case, the driver must be informed that it should handle all
    packets in raw mode. [1]
    
    This commit fixes connectivity issues for these devices.
    
    Before:
    
    [ Node 5 ] udhcpc -i wwan0
    udhcpc: started, v1.27.2
    udhcpc: sending discover
    udhcpc: sending discover
    udhcpc: sending discover
    
    After:
    
    [ Node 5 ] udhcpc -i wwan0
    udhcpc: started, v1.27.2
    udhcpc: sending discover
    udhcpc: sending select for 100.66.245.226
    udhcpc: lease of 100.66.245.226 obtained, lease time 7200
    udhcpc: ifconfig wwan0 100.66.245.226 netmask 255.255.255.252 broadcast
    +
    udhcpc: setting default routers: 100.66.245.225
    
    [1] https://lists.freedesktop.org/archives/libqmi-
    devel/2017-January/002064.html
    
    Tested on cns3xxx using a Sierra Wireless MC7455 LTE-A
    
    Signed-off-by: Koen Vandeputte <koen.vandeputte at ncentric.com>
    [bumped PKG_RELEASE]
    Signed-off-by: Jo-Philipp Wich <jo at mein.io>
---
 package/network/utils/uqmi/Makefile                      |  2 +-
 package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh | 15 ++++++++++++++-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/package/network/utils/uqmi/Makefile b/package/network/utils/uqmi/Makefile
index 9c8dada..16e4a5a 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 9c953ea..9a534d4 100755
--- a/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh
+++ b/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh
@@ -27,7 +27,7 @@ proto_qmi_init_config() {
 
 proto_qmi_setup() {
 	local interface="$1"
-
+	local dataformat
 	local device apn auth username password pincode delay modes pdptype profile dhcpv6 autoconnect plmn $PROTO_DEFAULT_OPTIONS
 	local cid_4 pdh_4 cid_6 pdh_6
 	local ip_6 ip_prefix_length gateway_6 dns1_6 dns2_6
@@ -99,6 +99,19 @@ proto_qmi_setup() {
 
 	uqmi -s -d "$device" --set-data-format 802.3
 	uqmi -s -d "$device" --wda-set-data-format 802.3
+	dataformat="$(uqmi -s -d "$device" --wda-get-data-format)"
+
+	if [ "$dataformat" = '"raw-ip"' ]; then
+
+		[ -f /sys/class/net/$ifname/qmi/raw_ip ] || {
+			echo "Device only supports raw-ip mode but is missing this required driver attribute: /sys/class/net/$ifname/qmi/raw_ip"
+			return 1
+		}
+
+		echo "Device does not support 802.3 mode. Informing driver of raw-ip only for $ifname .."
+		echo "Y" > /sys/class/net/$ifname/qmi/raw_ip
+	fi
+
 	uqmi -s -d "$device" --sync
 
 	echo "Waiting for network registration"



More information about the lede-commits mailing list