diff options
author | Dan Williams <dcbw@redhat.com> | 2017-02-28 13:38:16 -0600 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2017-02-28 13:44:48 -0600 |
commit | bf27e44caf7c7868e139e58e510c307770074171 (patch) | |
tree | 559fc599246cb028436a57eed06ee6d3c0ebe842 | |
parent | cec01fdaf67a7973a4bb1691baeb31fb0cf7ec2f (diff) |
broadband-modem: fix QCDM access tech reporting for WCDMA system modes
Two issues here:
1) PCH_SLEEP wasn't considered a "wcdma_open" state, but it should be
since the modem is still registered and can be attached in this state
2) If the system mode is WCDMA (eg, not GSM and not GSM/WCDMA) then
MM shouldn't assume GPRS if WCDMA isn't "open", since GPRS isn't
enabled in WCDMA-only mode
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=100000
-rw-r--r-- | src/mm-broadband-modem.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c index 3d7f09f4..17b3253a 100644 --- a/src/mm-broadband-modem.c +++ b/src/mm-broadband-modem.c @@ -2193,7 +2193,6 @@ access_tech_context_complete_and_free (AccessTechContext *ctx, mask = MM_IFACE_MODEM_CDMA_ALL_ACCESS_TECHNOLOGIES_MASK; break; case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_GSM: - case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_WCDMA: case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_GW: if (ctx->wcdma_open) { /* Assume UMTS; can't yet determine UMTS/HSxPA/HSPA+ with QCDM */ @@ -2204,6 +2203,13 @@ access_tech_context_complete_and_free (AccessTechContext *ctx, } mask = MM_IFACE_MODEM_3GPP_ALL_ACCESS_TECHNOLOGIES_MASK; break; + case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_WCDMA: + if (ctx->wcdma_open) { + /* Assume UMTS; can't yet determine UMTS/HSxPA/HSPA+ with QCDM */ + act = MM_MODEM_ACCESS_TECHNOLOGY_UMTS; + } + mask = MM_IFACE_MODEM_3GPP_ALL_ACCESS_TECHNOLOGIES_MASK; + break; case QCDM_CMD_CM_SUBSYS_STATE_INFO_SYSTEM_MODE_LTE: act = MM_MODEM_ACCESS_TECHNOLOGY_LTE; mask = MM_IFACE_MODEM_3GPP_ALL_ACCESS_TECHNOLOGIES_MASK; @@ -2259,7 +2265,8 @@ access_tech_qcdm_wcdma_ready (MMPortSerialQcdm *port, if (l1 == QCDM_WCDMA_L1_STATE_PCH || l1 == QCDM_WCDMA_L1_STATE_FACH || - l1 == QCDM_WCDMA_L1_STATE_DCH) + l1 == QCDM_WCDMA_L1_STATE_DCH || + l1 == QCDM_WCDMA_L1_STATE_PCH_SLEEP) ctx->wcdma_open = TRUE; } |