aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mm-bearer-mbim.c64
-rw-r--r--src/mm-bearer-mbim.h3
-rw-r--r--src/mm-broadband-modem-mbim.c90
3 files changed, 16 insertions, 141 deletions
diff --git a/src/mm-bearer-mbim.c b/src/mm-bearer-mbim.c
index 16dcad45..323483ce 100644
--- a/src/mm-bearer-mbim.c
+++ b/src/mm-bearer-mbim.c
@@ -34,18 +34,9 @@
G_DEFINE_TYPE (MMBearerMbim, mm_bearer_mbim, MM_TYPE_BASE_BEARER)
-enum {
- PROP_0,
- PROP_SESSION_ID,
- PROP_LAST
-};
-
-static GParamSpec *properties[PROP_LAST];
-
struct _MMBearerMbimPrivate {
/* The session ID for this bearer */
guint32 session_id;
-
MMPort *data;
};
@@ -1320,8 +1311,7 @@ report_connection_status (MMBaseBearer *self,
MMBaseBearer *
mm_bearer_mbim_new (MMBroadbandModemMbim *modem,
- MMBearerProperties *config,
- guint32 session_id)
+ MMBearerProperties *config)
{
MMBaseBearer *bearer;
@@ -1329,9 +1319,8 @@ mm_bearer_mbim_new (MMBroadbandModemMbim *modem,
* and that means that the object is not async-initable, so we just use
* g_object_new() here */
bearer = g_object_new (MM_TYPE_BEARER_MBIM,
- MM_BASE_BEARER_MODEM, modem,
+ MM_BASE_BEARER_MODEM, modem,
MM_BASE_BEARER_CONFIG, config,
- MM_BEARER_MBIM_SESSION_ID, (guint)session_id,
NULL);
/* Only export valid bearers */
@@ -1341,43 +1330,6 @@ mm_bearer_mbim_new (MMBroadbandModemMbim *modem,
}
static void
-set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- MMBearerMbim *self = MM_BEARER_MBIM (object);
-
- switch (prop_id) {
- case PROP_SESSION_ID:
- self->priv->session_id = g_value_get_uint (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- MMBearerMbim *self = MM_BEARER_MBIM (object);
-
- switch (prop_id) {
- case PROP_SESSION_ID:
- g_value_set_uint (value, self->priv->session_id);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-
-static void
mm_bearer_mbim_init (MMBearerMbim *self)
{
/* Initialize private data */
@@ -1404,8 +1356,6 @@ mm_bearer_mbim_class_init (MMBearerMbimClass *klass)
/* Virtual methods */
object_class->dispose = dispose;
- object_class->get_property = get_property;
- object_class->set_property = set_property;
base_bearer_class->connect = _connect;
base_bearer_class->connect_finish = connect_finish;
@@ -1416,14 +1366,4 @@ mm_bearer_mbim_class_init (MMBearerMbimClass *klass)
base_bearer_class->reload_stats_finish = reload_stats_finish;
base_bearer_class->load_connection_status = NULL;
base_bearer_class->load_connection_status_finish = NULL;
-
- properties[PROP_SESSION_ID] =
- g_param_spec_uint (MM_BEARER_MBIM_SESSION_ID,
- "Session ID",
- "Session ID to use with this bearer",
- 0,
- 255,
- 0,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
- g_object_class_install_property (object_class, PROP_SESSION_ID, properties[PROP_SESSION_ID]);
}
diff --git a/src/mm-bearer-mbim.h b/src/mm-bearer-mbim.h
index 0d97d8d9..3da599a6 100644
--- a/src/mm-bearer-mbim.h
+++ b/src/mm-bearer-mbim.h
@@ -53,8 +53,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMBearerMbim, g_object_unref)
/* MBIM bearer creation implementation.
* NOTE it is *not* a broadband bearer, so not async-initable */
MMBaseBearer *mm_bearer_mbim_new (MMBroadbandModemMbim *modem,
- MMBearerProperties *config,
- guint32 session_id);
+ MMBearerProperties *config);
guint32 mm_bearer_mbim_get_session_id (MMBearerMbim *self);
diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c
index a578aba1..baae397b 100644
--- a/src/mm-broadband-modem-mbim.c
+++ b/src/mm-broadband-modem-mbim.c
@@ -1962,93 +1962,29 @@ modem_reset (MMIfaceModem *_self,
/* Create Bearer (Modem interface) */
static MMBaseBearer *
-modem_create_bearer_finish (MMIfaceModem *self,
- GAsyncResult *res,
- GError **error)
+modem_create_bearer_finish (MMIfaceModem *self,
+ GAsyncResult *res,
+ GError **error)
{
return g_task_propagate_pointer (G_TASK (res), error);
}
-typedef struct {
- guint32 session_id;
- gboolean found;
-} FindSessionId;
-
static void
-bearer_list_session_id_foreach (MMBaseBearer *bearer,
- gpointer user_data)
+modem_create_bearer (MMIfaceModem *self,
+ MMBearerProperties *properties,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
- FindSessionId *ctx = user_data;
-
- if (!ctx->found &&
- MM_IS_BEARER_MBIM (bearer) &&
- mm_bearer_mbim_get_session_id (MM_BEARER_MBIM (bearer)) == ctx->session_id)
- ctx->found = TRUE;
-}
-
-static gint
-find_next_bearer_session_id (MMBroadbandModemMbim *self)
-{
- MMBearerList *bearer_list;
- guint i;
-
- g_object_get (self,
- MM_IFACE_MODEM_BEARER_LIST, &bearer_list,
- NULL);
-
- if (!bearer_list)
- return 0;
-
- for (i = 0; i <= 255; i++) {
- FindSessionId ctx;
-
- ctx.session_id = i;
- ctx.found = FALSE;
-
- mm_bearer_list_foreach (bearer_list,
- bearer_list_session_id_foreach,
- &ctx);
-
- if (!ctx.found) {
- g_object_unref (bearer_list);
- return (gint)i;
- }
- }
-
- /* no valid session id found */
- g_object_unref (bearer_list);
- return -1;
-}
-
-static void
-modem_create_bearer (MMIfaceModem *_self,
- MMBearerProperties *properties,
- GAsyncReadyCallback callback,
- gpointer user_data)
-{
- MMBroadbandModemMbim *self = MM_BROADBAND_MODEM_MBIM (_self);
MMBaseBearer *bearer;
- GTask *task;
- gint session_id;
-
- task = g_task_new (self, NULL, callback, user_data);
+ GTask *task;
- /* Find a new session ID */
- session_id = find_next_bearer_session_id (self);
- if (session_id < 0) {
- g_task_return_new_error (task,
- MM_CORE_ERROR,
- MM_CORE_ERROR_FAILED,
- "Not enough session IDs");
- g_object_unref (task);
- return;
- }
+ /* Note: the session id to be used by the bearer will always be 0
+ * for non-multiplexed sessions, bound to the non-VLAN-tagged traffic
+ * managed by the master network interface */
- /* We just create a MMBearerMbim */
+ task = g_task_new (self, NULL, callback, user_data);
mm_obj_dbg (self, "creating MBIM bearer in MBIM modem");
- bearer = mm_bearer_mbim_new (self,
- properties,
- (guint)session_id);
+ bearer = mm_bearer_mbim_new (MM_BROADBAND_MODEM_MBIM (self), properties);
g_task_return_pointer (task, bearer, g_object_unref);
g_object_unref (task);
}