diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-bearer-qmi.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/mm-bearer-qmi.c b/src/mm-bearer-qmi.c index 4e64e220..0918c05f 100644 --- a/src/mm-bearer-qmi.c +++ b/src/mm-bearer-qmi.c @@ -1103,10 +1103,12 @@ get_current_settings_ready (QmiClientWds *client, static void get_current_settings (GTask *task, QmiClientWds *client) { - ConnectContext *ctx; - QmiMessageWdsGetCurrentSettingsInput *input; - QmiWdsRequestedSettings requested; + MMBearerQmi *self; + ConnectContext *ctx; + QmiMessageWdsGetCurrentSettingsInput *input; + QmiWdsRequestedSettings requested; + self = g_task_get_source_object (task); ctx = g_task_get_task_data (task); g_assert (ctx->running_ipv4 || ctx->running_ipv6); @@ -1116,8 +1118,15 @@ get_current_settings (GTask *task, QmiClientWds *client) QMI_WDS_REQUESTED_SETTINGS_GATEWAY_INFO | QMI_WDS_REQUESTED_SETTINGS_MTU | QMI_WDS_REQUESTED_SETTINGS_DOMAIN_NAME_LIST | - QMI_WDS_REQUESTED_SETTINGS_IP_FAMILY | - QMI_WDS_REQUESTED_SETTINGS_OPERATOR_RESERVED_PCO; + QMI_WDS_REQUESTED_SETTINGS_IP_FAMILY; + + /* Modems like Qualcomm MPL200 and SimTech SIM7100E eventually crash when enabling PCO. + * Avoid crashing by skip registering for PCO */ + if (!mm_kernel_device_get_global_property_as_boolean (mm_port_peek_kernel_device (MM_PORT (ctx->qmi)), + "ID_MM_QMI_PCO_DISABLED")) { + mm_obj_dbg (self, "Requesting QMI WDS Operator Reserved PCO"); + requested |= QMI_WDS_REQUESTED_SETTINGS_OPERATOR_RESERVED_PCO; + } input = qmi_message_wds_get_current_settings_input_new (); qmi_message_wds_get_current_settings_input_set_requested_settings (input, requested, NULL); |