On Mon, Feb 16, 2009 at 01:00:51PM -0500, Dan Williams wrote: > On Mon, 2009-02-16 at 18:25 +0100, Daniel Wagner wrote: > > On Mon, Feb 16, 2009 at 05:04:44PM +0100, Johannes Berg wrote: > > > On Mon, 2009-02-16 at 17:00 +0100, Daniel Wagner wrote: > > > > > > > hotplug_event_begin_add_dev (..., parent_dev = NULL, ...) > > > > net_add(..., parent_dev = NULL, ...) > > > > { > > > > if (parent_dev == NULL) > > > > goto error; > > > > } > > > > > > > > Before I go deeper into that thing, does someone has > > > > an idea what could go wrong here with mac80211_hwsim? > > > > > > hwsim phys have no parents in sysfs since they're virtual. > > > > Do you propose to patch hald to handle this situation then? > > The patch (for now) would have to go in hal, since obviously if HAL > can't see it, NM won't. Until we port over to DeviceKit of course. Thanks for the information. After looking at HAL for a while and knowing that it will be replaced in the near future I decided not to write a proper patch. Instead I came up with a big hack. With this hack NM sees the mac80211_hwsim devices :) daniel --- hald/linux/device.c | 23 +++++++++++++---------- 1 files changed, 13 insertions(+), 10 deletions(-) diff --git a/hald/linux/device.c b/hald/linux/device.c index e48548e..699d26b 100644 --- a/hald/linux/device.c +++ b/hald/linux/device.c @@ -497,20 +497,22 @@ net_add (const gchar *sysfs_path, const gchar *device_file, HalDevice *parent_de guint media_type; gint flags; - d = NULL; - - if (parent_dev == NULL) - goto error; - d = hal_device_new (); hal_device_property_set_string (d, "linux.sysfs_path", sysfs_path); - hal_device_property_set_string (d, "info.parent", hal_device_get_udi (parent_dev)); + if (parent_dev != NULL) { + hal_device_property_set_string (d, "info.parent", hal_device_get_udi (parent_dev)); + hal_device_property_set_string (d, "net.originating_device", hal_device_get_udi (parent_dev)); + } else { + hal_device_property_set_string (d, "info.parent", "/org/freedesktop/Hal/devices/computer"); + hal_device_property_set_string (d, "net.originating_device", "/org/freedesktop/Hal/devices/computer"); + hal_device_property_set_string (d, "info.linux.driver", "mac80211_hwsim"); + parent_dev = hal_device_store_find (hald_get_gdl (), "/org/freedesktop/Hal/devices/computer"); + hal_device_property_set_string (parent_dev, "info.linux.driver", "mac80211"); + } hal_device_property_set_string (d, "info.category", "net"); hal_device_add_capability (d, "net"); - hal_device_property_set_string (d, "net.originating_device", hal_device_get_udi (parent_dev)); - ifname = hal_util_get_last_element (sysfs_path); hal_device_property_set_string (d, "net.interface", ifname); @@ -530,7 +532,7 @@ net_add (const gchar *sysfs_path, const gchar *device_file, HalDevice *parent_de media_type = hal_device_property_get_int (d, "net.arp_proto_hw_id"); if (media_type == ARPHRD_ETHER) { const char *addr; - const char *parent_subsys; + const char *parent_subsys = 0; char bridge_path[HAL_PATH_MAX]; char wireless_path[HAL_PATH_MAX]; char wiphy_path[HAL_PATH_MAX]; @@ -557,7 +559,8 @@ net_add (const gchar *sysfs_path, const gchar *device_file, HalDevice *parent_de snprintf (wireless_path, HAL_PATH_MAX, "%s/wireless", sysfs_path); /* wireless dscape stack e.g. from rt2500pci driver*/ snprintf (wiphy_path, HAL_PATH_MAX, "%s/wiphy", sysfs_path); - parent_subsys = hal_device_property_get_string (parent_dev, "info.subsystem"); + if (parent_dev) + parent_subsys = hal_device_property_get_string (parent_dev, "info.subsystem"); if (parent_subsys && strcmp(parent_subsys, "bluetooth") == 0) { hal_device_property_set_string (d, "info.product", "Bluetooth Interface"); -- 1.6.0.2.GIT -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html