On Thu, Jun 22, 2006 at 05:55:46PM +0200, Jiri Benc wrote:

> On Sat, 17 Jun 2006 17:05:55 +0200, Ivo van Doorn wrote:
> > With this approach more buttons can be registered,
> > it includes the optional field to report an update of the key status
> > to the driver that registered it, and it supports for non-polling keys.
> 
> I think this is not specific to networking anymore, so it should go to
> lkml. Please be sure to Cc: input devices maintainer, Dmitry Torokhov.
> 
> Regarding rfkill button, I talked about that with Vojtech Pavlik (Cc:ed)
> and he suggests this solution:
> 
> - driver is responsible for turning on/off radio when the input device
>   is not opened;
> - when something opens the input device, it receives input events and 
>   gets responsible to turn on/off the radio (by ioctl or putting the 
>   network interfaces up/down).
> 
> This is of course not possible for all hardware, but it gives the most
> flexibility while keeping the possibility to switch of the radio without
> userspace support.
 
Let me elaborate a little bit on the possible implementation:

        1) 802.11 card drivers will implement an input device for each card in
        the system that has a user-controlled RF-Kill button or switch.

        2) 802.11 card drivers will implement an interface to enable/disable the
        radio, be it through a call, ioctl, or whatever, that is accessible from
        both the kernel and userspace.

        3) ACPI buttons drivers, and keyboard drivers will generate KEY_RFKILL
        on machines where RF-Kill keys are reported using ACPI events or
        keyboard scancodes.

        3) A rfkill.ko input handler module will be implemented, that listens to
        the SW_RFKILL and KEY_RFKILL events from all devices in the system, and
        will enable/disable radios on all 802.11 devices in the system.

The above will make the RF-Kill button work under all real scenarios as
user expects - it will enable/disable the radio. In the case where a
user has an additional PCMCIA card, both the radios will be disabled by
presing the RF-Kill button, which is arguably what the user expects.
Even BlueTooth or other RF technologies (CDMA, EDGE) can hook into this
mechanism.

        4) When userspace wants to take over the control over RF-Kill, and start
        additional services based on that, it can open the input devices to get
        the state of the buttons/switches, AND it can issue the EVIOCGRAB
        ioctl() to prevent the rfkill.ko and any other handlers from getting the
        events.

This allows simple implementation of dbus notifications and
NetworkManager-style configuration of network interfaces.

-- 
Vojtech Pavlik
Director SuSE Labs
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to