diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-12-27 13:42:28 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-12-27 13:51:28 +0100 |
commit | 731812fe342ba4d2a5531992638a21b8a27bdbb4 (patch) | |
tree | fca5f2acba8a0be6fd65f3e9e68f8fee91381854 | |
parent | 80b68ac0aeb4e6263ac5d17d268723ac6fd1df47 (diff) |
plugin: avoid QMI-managed net ports when compiling without QMI support
-rw-r--r-- | src/mm-device.c | 29 | ||||
-rw-r--r-- | src/mm-device.h | 2 | ||||
-rw-r--r-- | src/mm-plugin.c | 13 |
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, |