diff --git a/src/kerneldevice/mm-kernel-device-udev.c b/src/kerneldevice/mm-kernel-device-udev.c index 7fede022..914a8ce1 100644 --- a/src/kerneldevice/mm-kernel-device-udev.c +++ b/src/kerneldevice/mm-kernel-device-udev.c @@ -338,10 +338,21 @@ kernel_device_get_name (MMKernelDevice *_self) return mm_kernel_event_properties_get_name (self->priv->properties); } +/* Driver name for devices without one in sysfs, e.g. the virtual rmnet_ipa0 of + * Qualcomm vendor kernels, which is handled like the mainline 'ipa' driver */ +#define ID_MM_KERNEL_DRIVER "ID_MM_KERNEL_DRIVER" + static const gchar * -kernel_device_get_driver (MMKernelDevice *self) +kernel_device_get_driver (MMKernelDevice *_self) { - return MM_KERNEL_DEVICE_UDEV (self)->priv->driver; + MMKernelDeviceUdev *self; + const gchar *driver; + + self = MM_KERNEL_DEVICE_UDEV (_self); + if (self->priv->device && + (driver = g_udev_device_get_property (self->priv->device, ID_MM_KERNEL_DRIVER)) != NULL) + return driver; + return self->priv->driver; } static const gchar *