From: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
To: Carlos Corbacho <carlos@strangeworlds.co.uk>
Cc: Ivo van Doorn <ivdoorn@gmail.com>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
linux-kernel@vger.kernel.org,
"John W. Linville" <linville@tuxdriver.com>
Subject: Re: [PATCH 3/8] rfkill: handle KEY_RADIO and SW_RADIO events
Date: Sat, 12 Apr 2008 17:36:01 -0300 [thread overview]
Message-ID: <20080412203601.GA30014@khazad-dum.debian.net> (raw)
In-Reply-To: <200804122009.29968.carlos@strangeworlds.co.uk>
On Sat, 12 Apr 2008, Carlos Corbacho wrote:
> Although the current wireless driver implementations of rfkill/ input polling
> have been causing me a bit of a headache lately, with no nice solution in
> site, because of the following (b43 does this, but I suspect rt2x00 may also
> do the same, so it's a slightly more generic problem). Now, I have a patch
> locally to add rfkill support to acer-wmi, but still keep seeing the
> following:
>
> 1) acer-wmi loads
> 2) Press KEY_WLAN
> 3) rfkill-input notifies all registered KEY_WLAN rfkill drivers that KEY_WLAN
> has been pressed.
No. It changes the global state for WLAN rfkill switches, and then it
causes rfkill to call the toggle_radio(new global state) hooks of all
these switches. I know that's what you meant, but we better be explicit
about this.
There is NO notification of a key press, there is an explicit command to
change the radio switch state to an specific new state (it is not a
toggle command, even if the name of the hook is toggle_radio).
> 4) acer-wmi toggles the wireless radio state
> 5) b43 notices this state change because of it's polling, then sends a
> KEY_WLAN event (even though b43 knows it can't control the radio on my
> laptop)
b43 should not be issuing KEY_WLAN events in this case. It should be
updating its rfkill->state (one of my patches add a proper way to do
this), but that's it. See below.
> 6) Goto 3.
>
> And this continues in a loop. Removing the offending input_report_key() lines
> in the wireless driver stops this.
No wonder it does, it is a Bug From Hell to use the input layer to
*report* events that happened and were already handled. You use it to
*issue* events that *are still to be acted upon*, and that's only if you
are NOT the only one that will act upon them! Sometimes it is not
trivial at all to know in which side of the fence you are.
And here things get difficult. ipw2200 (or b43, or iwl*, etc) would
HAVE to know if its hardware rfkill input pin is supposed to be handled
as the canon way to know if rfkill is active or not, for example, not to
mention wheter it even makes sense for them to request that all other
radios change state (THAT is what issuing an input event means).
The simple, and IMHO any sane solution is to do the following:
1. Add a kernel notifier chain for b43, ipw*, iwl*, and other such
drivers to report any changes in their radio state (which is a product
of ALL their rfkill lines, software and hardware), and also changes in
their hardware rfkill input pins, using different events so that you
KNOW which ones are informing the world about input pin state changes,
and which one are just reports of a changed radio state.
2. NEVER issue input events from these drivers. At all. Just update the
rfkill switch state using rfkill_force_state, or let the pooling do it.
Then, we leave for userspace (hal + hal-info?) or a kernel platform
driver to decide if the kernel notification b43/ipw*/ilw*/etc issued
when it noticed its rfkill input pin changed state is to be made an
input event.
> Ideally, I think we are going to need some way of saying that platform
> firmware level drivers (e.g. acer-wmi, thinkpad-acpi, etc) take priority over
> the wireless drivers, and that the drivers should _not_ send out these
> KEY_WLAN events if one of acer-wmi, etc are loaded (or find some other nice
> way of handling this).
Better to have nothing but the platform firmware drivers issue such
input events. Have all other drivers issue notification events instead
(which are not input events), and have something else that can be model
specific decide which notification events are to be made input events.
--
"One disk to rule them all, One disk to find them. One disk to bring
them all and in the darkness grind them. In the Land of Redmond
where the shadows lie." -- The Silicon Valley Tarot
Henrique Holschuh
next prev parent reply other threads:[~2008-04-12 20:36 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-11 20:37 [GIT PATCH] rfkill support for r/w and r/o rfkill switches Henrique de Moraes Holschuh
2008-04-11 20:37 ` [PATCH 1/8] rfkill: clarify meaning of rfkill states Henrique de Moraes Holschuh
2008-04-14 4:22 ` Dmitry Torokhov
2008-04-11 20:37 ` [PATCH 2/8] rfkill: fix minor typo in kernel doc Henrique de Moraes Holschuh
2008-04-11 20:37 ` [PATCH 3/8] rfkill: handle KEY_RADIO and SW_RADIO events Henrique de Moraes Holschuh
2008-04-12 10:36 ` Ivo van Doorn
2008-04-12 12:05 ` Henrique de Moraes Holschuh
2008-04-12 12:23 ` Ivo van Doorn
2008-04-12 13:08 ` Henrique de Moraes Holschuh
2008-04-12 13:17 ` Ivo van Doorn
2008-04-12 15:47 ` Dmitry Torokhov
2008-04-12 18:02 ` Henrique de Moraes Holschuh
2008-04-12 18:14 ` Ivo van Doorn
2008-04-12 19:09 ` Carlos Corbacho
2008-04-12 20:36 ` Henrique de Moraes Holschuh [this message]
2008-04-11 20:37 ` [PATCH 4/8] rfkill: add read-write rfkill switch support Henrique de Moraes Holschuh
2008-04-12 10:36 ` Ivo van Doorn
2008-04-14 1:20 ` Henrique de Moraes Holschuh
2008-04-14 12:00 ` Ivo van Doorn
2008-04-14 14:16 ` Dmitry Torokhov
2008-04-14 14:36 ` Henrique de Moraes Holschuh
2008-04-14 15:19 ` Dmitry Torokhov
2008-04-14 16:33 ` Henrique de Moraes Holschuh
2008-04-14 18:05 ` Dmitry Torokhov
2008-04-14 21:41 ` Henrique de Moraes Holschuh
2008-04-14 19:06 ` Carlos Corbacho
2008-04-14 20:23 ` Dmitry Torokhov
2008-04-15 7:27 ` Carlos Corbacho
2008-04-15 12:58 ` Dmitry Torokhov
2008-04-14 21:04 ` Ivo van Doorn
2008-04-14 21:46 ` Henrique de Moraes Holschuh
2008-04-15 8:14 ` Ivo Van Doorn
2008-04-11 20:37 ` [PATCH 5/8] rfkill: add read-only " Henrique de Moraes Holschuh
2008-04-11 20:37 ` [PATCH 6/8] rfkill: add the WWAN radio type Henrique de Moraes Holschuh
2008-04-11 20:44 ` Inaky Perez-Gonzalez
2008-04-11 20:53 ` Henrique de Moraes Holschuh
2008-04-12 10:36 ` Ivo van Doorn
2008-04-12 12:15 ` Henrique de Moraes Holschuh
2008-04-12 12:28 ` Ivo van Doorn
2008-04-12 23:23 ` Inaky Perez-Gonzalez
2008-04-13 17:25 ` Henrique de Moraes Holschuh
2008-04-13 17:37 ` Ivo van Doorn
2008-04-13 18:16 ` Henrique de Moraes Holschuh
2008-04-14 4:20 ` Dmitry Torokhov
2008-04-11 20:37 ` [PATCH 7/8] rfkill: add an "any radio" switch type and functionality Henrique de Moraes Holschuh
2008-04-12 19:57 ` Pavel Machek
2008-04-13 17:40 ` Henrique de Moraes Holschuh
2008-04-11 20:37 ` [PATCH 8/8] rfkill: add parameter to disable radios by default Henrique de Moraes Holschuh
2008-04-12 10:36 ` Ivo van Doorn
2008-04-12 12:56 ` Henrique de Moraes Holschuh
2008-04-12 13:43 ` Ivo van Doorn
2008-04-12 14:43 ` Henrique de Moraes Holschuh
2008-04-12 16:24 ` Ivo van Doorn
2008-04-12 18:36 ` Henrique de Moraes Holschuh
2008-04-12 19:15 ` Ivo van Doorn
2008-04-12 10:36 ` [GIT PATCH] rfkill support for r/w and r/o rfkill switches Ivo van Doorn
2008-04-16 18:37 ` John W. Linville
2008-04-16 19:26 ` Ivo van Doorn
2008-04-16 19:58 ` John W. Linville
2008-04-16 20:40 ` Ivo van Doorn
2008-04-17 1:29 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080412203601.GA30014@khazad-dum.debian.net \
--to=hmh@hmh.eng.br \
--cc=carlos@strangeworlds.co.uk \
--cc=dmitry.torokhov@gmail.com \
--cc=ivdoorn@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linville@tuxdriver.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®