[PATCH] Update EPS registration state for LTE qmi modems

Alfonso Sánchez-Beato alfonso.sanchez-beato at canonical.com
Tue Feb 13 09:38:49 UTC 2018


MM was not updating the EPS registration status for qmi modems. This
led to LTE-only modems never having 'registered' status. This was
happening for Quectel EC21-V modem.
---
 src/mm-broadband-modem-qmi.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c
index 11546795..d87c39aa 100644
--- a/src/mm-broadband-modem-qmi.c
+++ b/src/mm-broadband-modem-qmi.c
@@ -4744,6 +4744,8 @@ common_process_serving_system_3gpp (MMBroadbandModemQmi *self,
     /* Report new registration states */
     mm_iface_modem_3gpp_update_cs_registration_state (MM_IFACE_MODEM_3GPP (self), mm_cs_registration_state);
     mm_iface_modem_3gpp_update_ps_registration_state (MM_IFACE_MODEM_3GPP (self), mm_ps_registration_state);
+    if (mm_access_technologies & MM_MODEM_ACCESS_TECHNOLOGY_LTE)
+        mm_iface_modem_3gpp_update_eps_registration_state (MM_IFACE_MODEM_3GPP (self), mm_ps_registration_state);
 
     /* Get 3GPP location LAC and CI */
     lac = 0;
@@ -5199,6 +5201,7 @@ common_process_system_info_3gpp (MMBroadbandModemQmi *self,
     guint16 lac;
     guint32 cid;
     gchar *operator_id;
+    gboolean has_lte_info;
 
     ps_registration_state = MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN;
     cs_registration_state = MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN;
@@ -5210,12 +5213,13 @@ common_process_system_info_3gpp (MMBroadbandModemQmi *self,
      *   LTE > WCDMA > GSM
      * The first one giving results will be the one reported.
      */
-    if (!process_lte_info (response_output, indication_output,
-                           &cs_registration_state,
-                           &ps_registration_state,
-                           &lac,
-                           &cid,
-                           &operator_id) &&
+    has_lte_info = process_lte_info (response_output, indication_output,
+                                     &cs_registration_state,
+                                     &ps_registration_state,
+                                     &lac,
+                                     &cid,
+                                     &operator_id);
+    if (!has_lte_info &&
         !process_wcdma_info (response_output, indication_output,
                              &cs_registration_state,
                              &ps_registration_state,
@@ -5240,6 +5244,8 @@ common_process_system_info_3gpp (MMBroadbandModemQmi *self,
     /* Report new registration states */
     mm_iface_modem_3gpp_update_cs_registration_state (MM_IFACE_MODEM_3GPP (self), cs_registration_state);
     mm_iface_modem_3gpp_update_ps_registration_state (MM_IFACE_MODEM_3GPP (self), ps_registration_state);
+    if (has_lte_info)
+        mm_iface_modem_3gpp_update_eps_registration_state (MM_IFACE_MODEM_3GPP (self), ps_registration_state);
     mm_iface_modem_3gpp_update_location (MM_IFACE_MODEM_3GPP (self), lac, cid);
 }
 
-- 
2.14.1



More information about the ModemManager-devel mailing list