Re: How does network manager read rfkill ?
- From: Dan Williams <dcbw redhat com>
- To: Maxim Levitsky <maximlevitsky gmail com>
- Cc: networkmanager-list gnome org, eye zak <eye zak devel gmail com>
- Subject: Re: How does network manager read rfkill ?
- Date: Wed, 29 Apr 2009 12:36:35 -0400
On Wed, 2009-04-29 at 16:33 +0300, Maxim Levitsky wrote:
> On Tue, 2009-04-28 at 12:11 -0400, Dan Williams wrote:
> > On Sat, 2009-04-25 at 00:45 +0300, Maxim Levitsky wrote:
> > > On Fri, 2009-04-24 at 12:49 -0400, Dan Williams wrote:
> > > > On Fri, 2009-04-24 at 18:16 +0300, Maxim Levitsky wrote:
> > > > > On Fri, 2009-04-24 at 11:06 -0400, Dan Williams wrote:
> > > > > > On Thu, 2009-04-23 at 22:35 +0300, Maxim Levitsky wrote:
> > > > > > > On Thu, 2009-04-23 at 07:15 -0400, Dan Williams wrote:
> > > > > > > > On Thu, 2009-04-23 at 02:16 -0400, eye zak wrote:
> > > > > > > > > Hi,
> > > > > > > > >
> > > > > > > > > I am writing low-level rfkill support in the ath5k driver in
> > > > > > > > > compat-wireless-2.6, and I am wondering how network manager knows
> > > > > > > > > about my rfkill device ?
> > > > > > > > >
> > > > > > > > > Hal recognizes it no problem and broadcasts an event on state change,
> > > > > > > > > and tracks the current state. But netowork manager (jaunty-latest)
> > > > > > > > > does not notice it.
> > > > > > > >
> > > > > > > > NM finds all devices in HAL with the capability 'killswitch', and polls
> > > > > > > > them every 6 seconds to find out if any of them return 0 for GetPower.
> > > > > > > > If any do, it assumes rfkill. Are you sure NM is allowed to talk to HAL
> > > > > > > > on your distribution? Some distros like Debian use different D-Bus
> > > > > > > > permissions styles, and if those are wrong in
> > > > > > > > the /etc/dbus-1/system.d/NetworkManager.conf, NM may not be able to talk
> > > > > > > > to HAL and get the killsiwtch state.
> > > > > > > >
> > > > > > > > Dan
> > > > > > >
> > > > > > > Or, it currently ignores platform kill switches, like acer-wmi
> > > > > >
> > > > > > Do those rfkill switches expose themselves via HAL? If so, then
> > > > > > NetworkManager is expected to work with them. If not, then those need
> > > > > > to either (a) be ported to the kernel's rfkill subsystem in which case
> > > > > > they will be supported by HAL 0.5.12 automatically, or (b) get HAL
> > > > > > support otherwise.
> > > > > >
> > > > > > Obviously (a) is preferred.
> > > > > >
> > > > >
> > > > > maxim maxim-laptop:~$ hald --version
> > > > > HAL package version: 0.5.12
> > > > >
> > > > > I tried acer-wmi, and NM doesn't see it.
> > > > > It does expose normal rfkill interface
> > > >
> > > > What distro? Can you attach the lshal bits for all killswitches
> > > > contained in 'lshal' ?
> > > >
> > > > Dan
> > > >
> > >
> > > Now I use ubuntu 9.04, but it was always present.
> > >
> > >
> > >
> > > > udi = '/org/freedesktop/Hal/devices/platform_acer_wmi_rfkill_acer_wireless_wlan'
> > > > info.addons.singleton = {'hald-addon-rfkill-killswitch'} (string list)
> > > > info.capabilities = {'killswitch'} (string list)
> > > > info.category = 'killswitch' (string)
> > > > info.interfaces = {'org.freedesktop.Hal.Device.KillSwitch'} (string list)
> > > > info.parent = '/org/freedesktop/Hal/devices/platform_acer_wmi' (string)
> > > > info.product = 'acer-wireless wlan Killswitch' (string)
> > > > info.subsystem = 'rfkill' (string)
> > > > info.udi = '/org/freedesktop/Hal/devices/platform_acer_wmi_rfkill_acer_wireless_wlan' (string)
> > > > killswitch.access_method = 'rfkill' (string)
> > > > killswitch.name = 'acer-wireless' (string)
> > > > killswitch.state = 1 (0x1) (int)
> > > > killswitch.type = 'wlan' (string)
> > > > linux.hotplug_type = 2 (0x2) (int)
> > > > linux.subsystem = 'rfkill' (string)
> > > > linux.sysfs_path = '/sys/devices/platform/acer-wmi/rfkill/rfkill1' (string)
> > > >
> > > >
> > >
> > >
> > >
> > > > udi = '/org/freedesktop/Hal/devices/pci_8086_4222_rfkill_3945BG_wlan'
> > > > info.addons.singleton = {'hald-addon-rfkill-killswitch'} (string list)
> > > > info.capabilities = {'killswitch'} (string list)
> > > > info.category = 'killswitch' (string)
> > > > info.interfaces = {'org.freedesktop.Hal.Device.KillSwitch'} (string list)
> > > > info.parent = '/org/freedesktop/Hal/devices/pci_8086_4222' (string)
> > > > info.product = '3945BG wlan Killswitch' (string)
> > > > info.subsystem = 'rfkill' (string)
> > > > info.udi = '/org/freedesktop/Hal/devices/pci_8086_4222_rfkill_3945BG_wlan' (string)
> > > > info.vendor = 'Intel Corporation' (string)
> > > > killswitch.access_method = 'rfkill' (string)
> > > > killswitch.name = '3945BG' (string)
> > > > killswitch.state = 1 (0x1) (int)
> > > > killswitch.type = 'wlan' (string)
> > > > linux.hotplug_type = 2 (0x2) (int)
> > > > linux.subsystem = 'rfkill' (string)
> > > > linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1c.3/0000:06:00.0/rfkill/rfkill0' (string)
> > > >
> > > >
> > >
> > >
> > > Last time, a week ago or so, I installed ubuntu 9.04
> > > I disabled rfkill support in iwl3945, loaded acer-wmi, and yet NM didn't see the killswitch, even after a reboot
> >
> > Do you ever get anything in syslog (wherever syslog directs the 'daemon'
> > facility) about "Found radio killswitch xxxx"? If not, then we have to
> > do some more debugging, and if you can rebuild NM with a patch or two,
> > I'd be happy to help figure out where NM is going wrong. Your lshal
> > looks fine.
> >
> > Dan
> >
> >
> I have just redo the same, and acer-wmi works fine with NM. really don't
> know why it didn't. Sorry :-) for the noise.
>
>
> I have one question though, the default interval of polling is quite
> large, can you lower is to at least 3 seconds?
I picked 6 seconds as an arbitrary value because it seemed like a good
compromise between wakeups and responsiveness. But honestly, 3 or 4
seconds would be fine too probably.
> I run it with 1 second interval, and don't see much influence on
> wakeups/cpu usage.
>
>
> Can't rfkill be interrupt driven instead, (I think NM supports such
> thing now, but could you explain more?)
2.6.27 and later support rfkill notifications to userspace via uevents,
but nothing before. The rfkill code in NM does need a rewrite to handle
this better though. I don't yet know if HAL proxies the state events
back out over D-Bus (last I checked it didn't) so either we make HAL do
that, or we make NM listen for the kernel events itself.
Dan
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]