aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mm-bearer-list.c2
-rw-r--r--src/plugins/mtk/mm-broadband-modem-mbim-mtk-fibocom.c31
2 files changed, 32 insertions, 1 deletions
diff --git a/src/mm-bearer-list.c b/src/mm-bearer-list.c
index b4e513bc..915dc1fb 100644
--- a/src/mm-bearer-list.c
+++ b/src/mm-bearer-list.c
@@ -499,6 +499,6 @@ mm_bearer_list_class_init (MMBearerListClass *klass)
0,
G_MAXUINT,
0,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
+ G_PARAM_READWRITE);
g_object_class_install_property (object_class, PROP_MAX_ACTIVE_MULTIPLEXED_BEARERS, properties[PROP_MAX_ACTIVE_MULTIPLEXED_BEARERS]);
}
diff --git a/src/plugins/mtk/mm-broadband-modem-mbim-mtk-fibocom.c b/src/plugins/mtk/mm-broadband-modem-mbim-mtk-fibocom.c
index 17d4761a..cfcd3616 100644
--- a/src/plugins/mtk/mm-broadband-modem-mbim-mtk-fibocom.c
+++ b/src/plugins/mtk/mm-broadband-modem-mbim-mtk-fibocom.c
@@ -43,6 +43,7 @@ G_DEFINE_TYPE_EXTENDED (MMBroadbandModemMbimMtkFibocom, mm_broadband_modem_mbim_
struct _MMBroadbandModemMbimMtkFibocomPrivate {
/* Supported features */
+ gboolean is_multiplex_supported;
gboolean is_async_slaac_supported;
};
@@ -53,6 +54,10 @@ struct _MMBroadbandModemMbimMtkFibocomPrivate {
* versions. */
#define ASYNC_SLAAC_SUPPORTED_VERSION 29, 23, 6
+/* Multiple Multiplexed PDNs are not correctly supported in old firmware
+ * versions. */
+#define MULTIPLEX_SUPPORTED_VERSION 29, 23, 6
+
static inline gboolean
fm350_check_version (guint A1, guint A2, guint A3,
guint B1, guint B2, guint B3)
@@ -92,6 +97,11 @@ process_fm350_version_features (MMBroadbandModemMbimMtkFibocom *self,
self->priv->is_async_slaac_supported = fm350_check_version (major, minor, micro, ASYNC_SLAAC_SUPPORTED_VERSION);
mm_obj_info (self, "FM350 async SLAAC result indications are %ssupported",
self->priv->is_async_slaac_supported ? "" : "not ");
+
+ /* Check if multiplex is supported */
+ self->priv->is_multiplex_supported = fm350_check_version (major, minor, micro, MULTIPLEX_SUPPORTED_VERSION);
+ mm_obj_info (self, "FM350 multiplexing is %ssupported",
+ self->priv->is_multiplex_supported ? "" : "not ");
}
/*****************************************************************************/
@@ -166,6 +176,26 @@ create_bearer (MMIfaceModem *_self,
g_object_unref (task);
}
+/*****************************************************************************/
+/* Create Bearer List (Modem interface) */
+
+static MMBearerList *
+create_bearer_list (MMIfaceModem *self)
+{
+ MMBearerList *bearer_list;
+
+ bearer_list = iface_modem_parent->create_bearer_list (self);
+
+ if (!MM_BROADBAND_MODEM_MBIM_MTK_FIBOCOM (self)->priv->is_multiplex_supported) {
+ g_object_set (bearer_list,
+ MM_BEARER_LIST_MAX_ACTIVE_MULTIPLEXED_BEARERS, 0,
+ NULL);
+ mm_obj_dbg (self, "FM350 firmware version doesn't support multiplexed bearers");
+ }
+
+ return bearer_list;
+}
+
/******************************************************************************/
MMBroadbandModemMbimMtkFibocom *
@@ -211,6 +241,7 @@ iface_modem_init (MMIfaceModem *iface)
iface->load_revision_finish = load_revision_finish;
iface->create_bearer = create_bearer;
iface->create_bearer_finish = create_bearer_finish;
+ iface->create_bearer_list = create_bearer_list;
}
static void