diff options
author | Dan Williams <dcbw@redhat.com> | 2014-02-13 15:18:16 -0600 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2014-02-13 15:18:16 -0600 |
commit | 42ad7b758a09b91bba6cda7fe9ac06525aa86f6a (patch) | |
tree | c3e32c7d533ce06eb3029017cd888f1301e411b7 /src/mm-device.c | |
parent | fbb35628d525a7072ef87a9968cbc2ab1a705a6b (diff) |
manager: make Bluetooth rfcomm ports work again
At some point rfcomm serial ports stopped having parents in sysfs,
so checks to get the physical device fail because the rfcomm port
is /sys/devices/virtual/rfcommX and has no parents. So we have
to fall back on checking the interface name.
Diffstat (limited to 'src/mm-device.c')
-rw-r--r-- | src/mm-device.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mm-device.c b/src/mm-device.c index d2ca4de4..0d65d19b 100644 --- a/src/mm-device.c +++ b/src/mm-device.c @@ -232,6 +232,7 @@ const gchar * mm_device_utils_get_port_driver (GUdevDevice *udev_port) { const gchar *driver, *subsys; + const char *name = g_udev_device_get_name (udev_port); driver = g_udev_device_get_driver (udev_port); if (!driver) { @@ -254,6 +255,12 @@ mm_device_utils_get_port_driver (GUdevDevice *udev_port) g_object_unref (parent); } + /* Newer kernels don't set up the rfcomm port parent in sysfs, + * so we must infer it from the device name. + */ + if (!driver && strncmp (name, "rfcomm", 6) == 0) + driver = "bluetooth"; + return driver; } |