aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2017-02-28 13:38:16 -0600
committerDan Williams <dcbw@redhat.com>2017-02-28 13:44:48 -0600
commitbf27e44caf7c7868e139e58e510c307770074171 (patch)
tree559fc599246cb028436a57eed06ee6d3c0ebe842
parentcec01fdaf67a7973a4bb1691baeb31fb0cf7ec2f (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.c11
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;
}