--- NetworkManager-0.7.1/src/nm-hal-manager.c.old 2009-07-25 16:56:07.000000000 -0400 +++ NetworkManager-0.7.1/src/nm-hal-manager.c 2009-07-25 16:56:07.000000000 -0400 @@ -1098,10 +1098,29 @@ libhal_free_string (usb_intf_udi); } } + if (subsys && !strcmp (subsys, "ssb")) { + char *ssb_intf_udi; + + ssb_intf_udi = libhal_device_get_property_string (priv->hal_ctx, udi, "info.parent", NULL); + if (ssb_intf_udi) { + od = libhal_device_get_property_string (priv->hal_ctx, ssb_intf_udi, "info.parent", NULL); + + /* Ensure the grandparent really is the "USB Device" */ + if (od) { + tmp = hal_get_subsystem (priv->hal_ctx, od); + if (!tmp || !strcmp (tmp, "ssb")) { + od = NULL; + } + if (tmp) + libhal_free_string (tmp); + } + libhal_free_string (ssb_intf_udi); + } + } libhal_free_string (subsys); libhal_free_string (parent); - /* For non-USB devices, and ss a fallback, just use the originating device + /* For non-USB,SSB 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. */ if (!od)