summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2009-08-14 09:44:02 -0500
committerDan Williams <dcbw@redhat.com>2009-08-14 09:44:02 -0500
commitd185695d80b248354dd7a95fd896daa5c45085e5 (patch)
treec56808b36b45f72a6e0d16e94ca16ec92e7e4f74
parent272c6a626a27f4d3a88a1aedd7887d63f6a818d5 (diff)
core: handle new 'ssb' bus from HAL 0.5.13 (deb #540613)
HAL added 'ssb' (Silicon Sonics Backplane, used internally on most Broadcom ethernet and wifi chipsets) in 0.5.13, which changed the device list layout and made NM unable to get the driver for the wifi device. Fix that.
-rw-r--r--src/nm-hal-manager.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/nm-hal-manager.c b/src/nm-hal-manager.c
index 581d79e63c..a49e9e657a 100644
--- a/src/nm-hal-manager.c
+++ b/src/nm-hal-manager.c
@@ -146,9 +146,14 @@ nm_get_device_driver_name (LibHalContext *ctx, const char *origdev_udi)
/* s390 driver name is on the grandparent of the net device */
subsystem = hal_get_subsystem (ctx, origdev_udi);
- if (subsystem && !strcmp (subsystem, "ibmebus")) {
+ if (subsystem) {
+ if (!strcmp (subsystem, "ibmebus")) {
od_parent = libhal_device_get_property_string (ctx, origdev_udi, "info.parent", NULL);
origdev_udi = (const char *) od_parent;
+ } else if (!strcmp (subsystem, "ssb")) {
+ od_parent = libhal_device_get_property_string (ctx, origdev_udi, "info.parent", NULL);
+ origdev_udi = (const char *) od_parent;
+ }
}
drv = libhal_device_get_property_string (ctx, origdev_udi, "info.linux.driver", NULL);
@@ -1214,8 +1219,9 @@ emit_udi_added (NMHalManager *self, const char *udi, DeviceCreator *creator)
libhal_free_string (subsys);
libhal_free_string (parent);
- /* For non-USB devices, and ss a fallback, just use the originating device
- * of the tty; though this might result in more than one modem being detected by NM.
+ /* For non-USB devices, and as a fallback, just use the originating device
+ * of the tty; though this might result in more than one modem being
+ * detected by NM.
*/
if (!od)
od = hal_get_originating_device (priv->hal_ctx, udi, creator->category);