diff options
author | Alfonso Sánchez-Beato <alfonso.sanchez-beato@canonical.com> | 2018-02-13 10:38:49 +0100 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2018-02-13 10:07:25 -0600 |
commit | 10cb61f399b80c9db1b3b1b570214da164c469aa (patch) | |
tree | bb4a93ba85ba819a259ceda36caed626d2ee7bd4 /src | |
parent | dce07527433aad328f2bb3c2bddaab0c91fbc6c1 (diff) |
broadband-modem-qmi: update EPS registration state for LTE qmi modems
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 18 |
1 files 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); } |