aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-12-27 13:42:28 +0100
committerAleksander Morgado <aleksander@lanedo.com>2012-12-27 13:51:28 +0100
commit731812fe342ba4d2a5531992638a21b8a27bdbb4 (patch)
treefca5f2acba8a0be6fd65f3e9e68f8fee91381854
parent80b68ac0aeb4e6263ac5d17d268723ac6fd1df47 (diff)
plugin: avoid QMI-managed net ports when compiling without QMI support
-rw-r--r--src/mm-device.c29
-rw-r--r--src/mm-device.h2
-rw-r--r--src/mm-plugin.c13
3 files changed, 27 insertions, 17 deletions
diff --git a/src/mm-device.c b/src/mm-device.c
index c28d0b5a..e8330d62 100644
--- a/src/mm-device.c
+++ b/src/mm-device.c
@@ -197,16 +197,16 @@ out:
return success;
}
-static gchar *
-get_driver_name (GUdevDevice *device)
+const gchar *
+mm_device_utils_get_port_driver (GUdevDevice *udev_port)
{
- GUdevDevice *parent = NULL;
const gchar *driver, *subsys;
- gchar *ret = NULL;
- driver = g_udev_device_get_driver (device);
+ driver = g_udev_device_get_driver (udev_port);
if (!driver) {
- parent = g_udev_device_get_parent (device);
+ GUdevDevice *parent;
+
+ parent = g_udev_device_get_parent (udev_port);
if (parent)
driver = g_udev_device_get_driver (parent);
@@ -218,32 +218,29 @@ get_driver_name (GUdevDevice *device)
if (subsys && !strcmp (subsys, "bluetooth"))
driver = "bluetooth";
}
- }
- if (driver)
- ret = g_strdup (driver);
- if (parent)
- g_object_unref (parent);
+ if (parent)
+ g_object_unref (parent);
+ }
- return ret;
+ return driver;
}
static void
add_port_driver (MMDevice *self,
GUdevDevice *udev_port)
{
- gchar *driver = NULL;
+ const gchar *driver;
guint n_items;
guint i;
- driver = get_driver_name (udev_port);
+ driver = mm_device_utils_get_port_driver (udev_port);
n_items = (self->priv->drivers ? g_strv_length (self->priv->drivers) : 0);
if (n_items > 0) {
/* Add driver to our list of drivers, if not already there */
for (i = 0; self->priv->drivers[i]; i++) {
if (g_str_equal (self->priv->drivers[i], driver)) {
- g_free (driver);
driver = NULL;
break;
}
@@ -255,7 +252,7 @@ add_port_driver (MMDevice *self,
self->priv->drivers = g_realloc (self->priv->drivers,
(n_items + 2) * sizeof (gchar *));
- self->priv->drivers[n_items] = driver;
+ self->priv->drivers[n_items] = g_strdup (driver);
self->priv->drivers[n_items + 1] = NULL;
}
diff --git a/src/mm-device.h b/src/mm-device.h
index c8aa6412..4849905b 100644
--- a/src/mm-device.h
+++ b/src/mm-device.h
@@ -94,4 +94,6 @@ GObject *mm_device_get_port_probe (MMDevice *self,
GList *mm_device_peek_port_probe_list (MMDevice *self);
GList *mm_device_get_port_probe_list (MMDevice *self);
+const gchar *mm_device_utils_get_port_driver (GUdevDevice *udev_port);
+
#endif /* MM_DEVICE_H */
diff --git a/src/mm-plugin.c b/src/mm-plugin.c
index b3e85d7b..c7a58b77 100644
--- a/src/mm-plugin.c
+++ b/src/mm-plugin.c
@@ -820,7 +820,18 @@ mm_plugin_create_modem (MMPlugin *self,
MM_CORE_ERROR_UNSUPPORTED,
"unsupported subsystem: '%s'",
mm_port_probe_get_port_subsys (probe));
- } else if (MM_PLUGIN_GET_CLASS (self)->grab_port)
+ }
+#if !defined WITH_QMI
+ else if (mm_port_probe_get_port_type (probe) == MM_PORT_TYPE_NET &&
+ g_str_equal (mm_device_utils_get_port_driver (mm_port_probe_peek_port (probe)),
+ "qmi_wwan")) {
+ grabbed = FALSE;
+ inner_error = g_error_new (MM_CORE_ERROR,
+ MM_CORE_ERROR_UNSUPPORTED,
+ "ignoring QMI net port");
+ }
+#endif
+ else if (MM_PLUGIN_GET_CLASS (self)->grab_port)
grabbed = MM_PLUGIN_GET_CLASS (self)->grab_port (MM_PLUGIN (self),
modem,
probe,