Re: NetworkManager and mac80211_hwsim
- From: Daniel Wagner <wagi monom org>
- To: Dan Williams <dcbw redhat com>
- Cc: Johannes Berg <johannes sipsolutions net>, linux-wireless vger kernel org, networkmanager-list gnome org
- Subject: Re: NetworkManager and mac80211_hwsim
- Date: Wed, 18 Feb 2009 09:06:36 +0100
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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]