diff options
author | Aleksander Morgado <aleksandermj@chromium.org> | 2024-02-14 14:25:33 +0000 |
---|---|---|
committer | Aleksander Morgado <aleksandermj@chromium.org> | 2024-02-15 21:01:52 +0000 |
commit | 2f5ebfadee588da549005785e9776ec869d0054f (patch) | |
tree | f47772f443ccfcba491a4c381b22fc639d2f919f /src | |
parent | 1373ca7e51e790be6c1747947ccd73361a673358 (diff) |
iface-modem: create bearer list after loading revision
Modems may have certain features only available in new firmware
versions. We should try to load the firmware revision as soon as
possible, even before creating the bearer list, as that informs
already about multiplexing support in the device.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-iface-modem.c | 77 |
1 files changed, 40 insertions, 37 deletions
diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c index c106f9e6..4b9b45a9 100644 --- a/src/mm-iface-modem.c +++ b/src/mm-iface-modem.c @@ -4922,10 +4922,10 @@ typedef enum { INITIALIZATION_STEP_SUPPORTED_CAPABILITIES, INITIALIZATION_STEP_SUPPORTED_CHARSETS, INITIALIZATION_STEP_CHARSET, - INITIALIZATION_STEP_BEARERS, INITIALIZATION_STEP_MANUFACTURER, INITIALIZATION_STEP_MODEL, INITIALIZATION_STEP_REVISION, + INITIALIZATION_STEP_BEARERS, INITIALIZATION_STEP_CARRIER_CONFIG, INITIALIZATION_STEP_HARDWARE_REVISION, INITIALIZATION_STEP_EQUIPMENT_ID, @@ -5723,42 +5723,6 @@ interface_initialization_step (GTask *task) ctx->step++; /* fall-through */ - case INITIALIZATION_STEP_BEARERS: { - g_autoptr(MMBearerList) list = NULL; - - /* Bearers setup is meant to be loaded only once during the whole - * lifetime of the modem, so check if it exists; and if it doesn't, - * create it right away. */ - g_object_get (self, - MM_IFACE_MODEM_BEARER_LIST, &list, - NULL); - - if (!list) { - list = MM_IFACE_MODEM_GET_INTERFACE (self)->create_bearer_list (self); - g_signal_connect (list, - "notify::" MM_BEARER_LIST_NUM_BEARERS, - G_CALLBACK (bearer_list_updated), - self); - - mm_gdbus_modem_set_max_active_bearers ( - ctx->skeleton, - mm_bearer_list_get_max_active (list)); - mm_gdbus_modem_set_max_active_multiplexed_bearers ( - ctx->skeleton, - mm_bearer_list_get_max_active_multiplexed (list)); - - /* MaxBearers set equal to MaxActiveBearers */ - mm_gdbus_modem_set_max_bearers ( - ctx->skeleton, - mm_gdbus_modem_get_max_active_bearers (ctx->skeleton)); - - g_object_set (self, - MM_IFACE_MODEM_BEARER_LIST, list, - NULL); - } - ctx->step++; - } /* fall-through */ - case INITIALIZATION_STEP_MANUFACTURER: /* Manufacturer is meant to be loaded only once during the whole * lifetime of the modem. Therefore, if we already have them loaded, @@ -5807,6 +5771,45 @@ interface_initialization_step (GTask *task) ctx->step++; /* fall-through */ + case INITIALIZATION_STEP_BEARERS: { + /* This step should be run always after having loaded the firmware revision + * number, because certain modems may have multiplexing support only in + * new releases. */ + g_autoptr(MMBearerList) list = NULL; + + /* Bearers setup is meant to be loaded only once during the whole + * lifetime of the modem, so check if it exists; and if it doesn't, + * create it right away. */ + g_object_get (self, + MM_IFACE_MODEM_BEARER_LIST, &list, + NULL); + + if (!list) { + list = MM_IFACE_MODEM_GET_INTERFACE (self)->create_bearer_list (self); + g_signal_connect (list, + "notify::" MM_BEARER_LIST_NUM_BEARERS, + G_CALLBACK (bearer_list_updated), + self); + + mm_gdbus_modem_set_max_active_bearers ( + ctx->skeleton, + mm_bearer_list_get_max_active (list)); + mm_gdbus_modem_set_max_active_multiplexed_bearers ( + ctx->skeleton, + mm_bearer_list_get_max_active_multiplexed (list)); + + /* MaxBearers set equal to MaxActiveBearers */ + mm_gdbus_modem_set_max_bearers ( + ctx->skeleton, + mm_gdbus_modem_get_max_active_bearers (ctx->skeleton)); + + g_object_set (self, + MM_IFACE_MODEM_BEARER_LIST, list, + NULL); + } + ctx->step++; + } /* fall-through */ + case INITIALIZATION_STEP_CARRIER_CONFIG: /* Current carrier config is meant to be loaded only once during the whole * lifetime of the modem. Therefore, if we already have them loaded, |