aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksandermj@google.com>2022-07-16 14:43:56 +0200
committerAleksander Morgado <aleksander@aleksander.es>2022-07-16 22:24:02 +0200
commit21d24657ebddbf7a7ad000867d48655e10fa8da0 (patch)
treea95f64882451669955e49688240400bf7764e5e3
parentd2bc73f394ddcb3a9d4cb90745cb9eab8bb6c8ec (diff)
shared-qmi: make refresh all non-fatal during SIM hot swap setup
If for any reason "Refresh all" fails, don't return an error, as we may have already configured SIM slot status correctly.
-rw-r--r--src/mm-shared-qmi.c26
1 files changed, 7 insertions, 19 deletions
diff --git a/src/mm-shared-qmi.c b/src/mm-shared-qmi.c
index 2a181378..52b36268 100644
--- a/src/mm-shared-qmi.c
+++ b/src/mm-shared-qmi.c
@@ -3971,35 +3971,23 @@ uim_refresh_register_all_ready (QmiClientUim *client,
g_autoptr(QmiMessageUimRefreshRegisterAllOutput) output = NULL;
g_autoptr(GError) error = NULL;
MMIfaceModem *self;
- Private *priv;
SetupSimHotSwapContext *ctx;
self = g_task_get_source_object (task);
- priv = get_private (MM_SHARED_QMI (self));
ctx = g_task_get_task_data (task);
output = qmi_client_uim_refresh_register_all_finish (client, res, &error);
if (!output || !qmi_message_uim_refresh_register_all_output_get_result (output, &error)) {
- if (g_error_matches (error, QMI_PROTOCOL_ERROR, QMI_PROTOCOL_ERROR_NOT_SUPPORTED) ||
- g_error_matches (error, QMI_PROTOCOL_ERROR, QMI_PROTOCOL_ERROR_INVALID_QMI_COMMAND)) {
- /* As last resort, if 'refresh register all' fails, try a plain 'refresh register'.
- * Some older modems may not support 'refresh register all'. */
- ctx->step++;
- setup_sim_hot_swap_step (task);
- return;
- }
-
+ /* As last resort, if 'refresh register all' fails, try a plain 'refresh register'.
+ * Some older modems may not support 'refresh register all'. */
mm_obj_dbg (self, "refresh register all operation failed: %s", error->message);
- g_clear_object (&priv->uim_client);
- g_task_return_error (task, g_steal_pointer (&error));
- g_object_unref (task);
- return;
+ ctx->step++;
+ } else {
+ /* Jump to setup refresh indication signal */
+ mm_obj_dbg (self, "registered for all SIM refresh events");
+ ctx->step = SETUP_SIM_HOT_SWAP_STEP_UIM_REFRESH_INDICATION;
}
- mm_obj_dbg (self, "registered for all SIM refresh events");
-
- /* Jump to setup refresh indication signal */
- ctx->step = SETUP_SIM_HOT_SWAP_STEP_UIM_REFRESH_INDICATION;
setup_sim_hot_swap_step (task);
}