aboutsummaryrefslogtreecommitdiff
path: root/src/mm-iface-modem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mm-iface-modem.c')
-rw-r--r--src/mm-iface-modem.c33
1 files changed, 12 insertions, 21 deletions
diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c
index 5ac3da9c..20580d8f 100644
--- a/src/mm-iface-modem.c
+++ b/src/mm-iface-modem.c
@@ -5083,47 +5083,38 @@ interface_initialization_step (GTask *task)
/* fall-through */
case INITIALIZATION_STEP_BEARERS: {
- MMBearerList *list = NULL;
+ g_autoptr(MMBearerList) list = NULL;
/* Bearers setup is meant to be loaded only once during the whole
- * lifetime of the modem. The list may have been created by the object
- * implementing the interface; if so use it. */
+ * 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) {
- guint n;
-
- /* The maximum number of available/connected modems is guessed from
- * the size of the data ports list. */
- n = g_list_length (mm_base_modem_peek_data_ports (MM_BASE_MODEM (self)));
- mm_obj_dbg (self, "allowed up to %u active bearers", n);
-
- /* Create new default list */
- list = mm_bearer_list_new (n);
+ 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);
- g_object_set (self,
- MM_IFACE_MODEM_BEARER_LIST, list,
- NULL);
- }
- if (mm_gdbus_modem_get_max_active_bearers (ctx->skeleton) == 0)
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 */
- if (mm_gdbus_modem_get_max_bearers (ctx->skeleton) == 0)
+ /* MaxBearers set equal to MaxActiveBearers */
mm_gdbus_modem_set_max_bearers (
ctx->skeleton,
mm_gdbus_modem_get_max_active_bearers (ctx->skeleton));
- g_object_unref (list);
-
+ g_object_set (self,
+ MM_IFACE_MODEM_BEARER_LIST, list,
+ NULL);
+ }
ctx->step++;
} /* fall-through */