diff options
-rw-r--r-- | src/mm-broadband-modem.c | 22 | ||||
-rw-r--r-- | src/mm-iface-modem-3gpp.c | 31 |
2 files changed, 24 insertions, 29 deletions
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c index 7f2fe831..b7e5d0e7 100644 --- a/src/mm-broadband-modem.c +++ b/src/mm-broadband-modem.c @@ -12453,18 +12453,12 @@ iface_modem_initialize_ready (MMBroadbandModem *self, g_error_free (error); mm_iface_modem_update_failed_state (MM_IFACE_MODEM (self), failed_reason); - - /* Jump to the fallback step when on failure, we will allow some additional - * interfaces even in failed state. */ - ctx->step = INITIALIZE_STEP_FALLBACK_LIMITED; - initialize_step (task); - return; + } else { + /* bind simple properties */ + mm_iface_modem_bind_simple_status (MM_IFACE_MODEM (self), + self->priv->modem_simple_status); } - /* bind simple properties */ - mm_iface_modem_bind_simple_status (MM_IFACE_MODEM (self), - self->priv->modem_simple_status); - /* Go on to next step */ ctx->step++; initialize_step (task); @@ -12592,9 +12586,10 @@ initialize_step (GTask *task) /* fall through */ case INITIALIZE_STEP_JUMP_TO_LIMITED: - if (ctx->self->priv->modem_state == MM_MODEM_STATE_LOCKED) { - /* Jump to the fallback step when locked, we will allow some additional - * interfaces even in locked state. */ + if (ctx->self->priv->modem_state == MM_MODEM_STATE_LOCKED || + ctx->self->priv->modem_state == MM_MODEM_STATE_FAILED) { + /* Jump to the fallback step when locked or failed, we will allow some additional + * interfaces even in locked or failed state. */ ctx->step = INITIALIZE_STEP_FALLBACK_LIMITED; initialize_step (task); return; @@ -12736,7 +12731,6 @@ initialize_step (GTask *task) * leave the Voice interface around so that we can attempt * emergency voice calls. */ - mm_iface_modem_3gpp_shutdown (MM_IFACE_MODEM_3GPP (ctx->self)); mm_iface_modem_3gpp_profile_manager_shutdown (MM_IFACE_MODEM_3GPP_PROFILE_MANAGER (ctx->self)); mm_iface_modem_3gpp_ussd_shutdown (MM_IFACE_MODEM_3GPP_USSD (ctx->self)); mm_iface_modem_cdma_shutdown (MM_IFACE_MODEM_CDMA (ctx->self)); diff --git a/src/mm-iface-modem-3gpp.c b/src/mm-iface-modem-3gpp.c index 786d2bc0..50246791 100644 --- a/src/mm-iface-modem-3gpp.c +++ b/src/mm-iface-modem-3gpp.c @@ -3053,8 +3053,8 @@ static void interface_initialization_step (GTask *task); typedef enum { INITIALIZATION_STEP_FIRST, INITIALIZATION_STEP_ENABLED_FACILITY_LOCKS, - INITIALIZATION_STEP_TEST_LOCKED, INITIALIZATION_STEP_IMEI, + INITIALIZATION_STEP_TEST_LOCKED_OR_FAILED, INITIALIZATION_STEP_EPS_UE_MODE_OPERATION, INITIALIZATION_STEP_EPS_INITIAL_BEARER_SETTINGS, INITIALIZATION_STEP_NR5G_REGISTRATION_SETTINGS, @@ -3254,20 +3254,6 @@ interface_initialization_step (GTask *task) ctx->step++; /* fall through */ - case INITIALIZATION_STEP_TEST_LOCKED: - modem_state = MM_MODEM_STATE_UNKNOWN; - g_object_get (self, - MM_IFACE_MODEM_STATE, &modem_state, - NULL); - if (modem_state == MM_MODEM_STATE_LOCKED) { - /* Skip some steps and export the interface if modem is locked */ - ctx->step = INITIALIZATION_STEP_LAST; - interface_initialization_step (task); - return; - } - ctx->step++; - /* fall through */ - case INITIALIZATION_STEP_IMEI: /* IMEI value is meant to be loaded only once during the whole * lifetime of the modem. Therefore, if we already have it loaded, @@ -3284,6 +3270,21 @@ interface_initialization_step (GTask *task) ctx->step++; /* fall through */ + case INITIALIZATION_STEP_TEST_LOCKED_OR_FAILED: + modem_state = MM_MODEM_STATE_UNKNOWN; + g_object_get (self, + MM_IFACE_MODEM_STATE, &modem_state, + NULL); + if (modem_state == MM_MODEM_STATE_LOCKED || + modem_state == MM_MODEM_STATE_FAILED) { + /* Skip some steps and export the interface if modem is locked or failed */ + ctx->step = INITIALIZATION_STEP_LAST; + interface_initialization_step (task); + return; + } + ctx->step++; + /* fall through */ + case INITIALIZATION_STEP_EPS_UE_MODE_OPERATION: if (MM_IFACE_MODEM_3GPP_GET_INTERFACE (self)->load_eps_ue_mode_operation && MM_IFACE_MODEM_3GPP_GET_INTERFACE (self)->load_eps_ue_mode_operation_finish) { |