From: "Henrique de Moraes Holschuh" <hmh@hmh.eng.br>
To: "Dan Williams" <dcbw@redhat.com>
Cc: "Matthew Garrett" <mjg@redhat.com>,
"Tomas Winkler" <tomasw@gmail.com>,
"John W. Linville" <linville@tuxdriver.com>,
"Ivo van Doorn" <ivdoorn@gmail.com>,
linux-wireless@vger.kernel.org, "Dmitry Torokhov" <dtor@mail.ru>
Subject: Re: [PATCH 01/12] rfkill: clarify meaning of rfkill states
Date: Thu, 12 Jun 2008 13:31:38 -0300 [thread overview]
Message-ID: <1213288298.11423.1258137419@webmail.messagingengine.com> (raw)
In-Reply-To: <1213285384.6589.28.camel@localhost.localdomain>
On Thu, 12 Jun 2008 11:43:04 -0400, "Dan Williams" <dcbw@redhat.com> said:
> As you've explained it, I believe this will work IFF we take your
> suggestion and add a 3rd state RADIO_SW_BLOCKED to go along with
> RADIO_HW_BLOCKED and RADIO_UNBLOCKED.
Now you get it why I wanted the third state instead of a separate attribute,
I hope. It integrates much better on how *current* rfkill is supposed to
be used.
Good, I now just have to get to that email explaining switches, which I sort
of managed to already do partially, if you understood the above :-)
> In this system, if NM wants to softblock a wifi device for example, it
> would likely just turn off the transmitter with 'SIOCSIWTXPOW', thus the
Or you could also use sysfs to set the state to 0 (BLOCK). It is supposed
to perform the same operation as 'SIOCSIWTXPOW' to a power of 0, as far as
rfkill is concerned. Or you could, if you wanted to turn off *ALL*
transmitters of the same type, issue an input layer event for rfkill-input
to process. Whichever suits your application best.
> wifi device itself would report it's rfkill state as RADIO_SW_BLOCKED.
> NM would then be aware that it could be re-enabled at any time through
> software.
Yes.
> If the user then hits the hardkill switch, the wifi device would report
> RADIO_HW_BLOCKED, and NM would be aware that the user must unkill the
> transmitter with a physical switch.
Yes.
> It gets a bit interesting when unrelated killswitches like hp-wmi and
> thinkpad-acpi are used, because if those just softkill the radio, you
> could end up in the situation where the radio itself is RADIO_UNBLOCKED
> but the struct rfkill created by hp-wmi is RADIO_SW_BLOCKED if BIOS
> doesn't track the actual state of the radio too. How do we fix that?
It is already fixed :-) The radio itself will be RADIO_HW_BLOCKED (to
use your terms). Think about it: the thinkpad-acpi and hp-wmi
softswitches are not magic, they somehow rfkill the real radio devices.
That "somehow" is done through an input pin in the radio device that
will change state when the thinkpad-acpi/hp-wmi softswitch changes state,
so the radio device driver (which has NOTHING to do with thinkpad-acpi
OR hp-wmi, and doesn't even know they exist!) will report that the radio
is now in state RADIO_HW_BLOCKED.
So, a softswitch in one platform driver like thinkpad-acpi or hp-wmi CAN
cause a separate device under control by another module (the radio itself)
to see a hardswitch rfkill happening. This is fine, it is as things are
supposed to work.
That's why I call the current rfkill design one that hides the switch
topology from its users. Which is a Good Thing, as it means it gets
that much easier to write platform drivers and network drivers that
use rfkill.
The uglyness of the way some devices implement rfkill happens when the
hardware/firmware itself kludges things by unplugging devices from the
BUS when you rfkill that device. This has nothing to do with the rfkill
code in the kernel, it is just how some of these things work and we cannot
change that. Bluetooth and WWAN usually get this kind of treatment.
There is no sane workaround that could be done for that, we will have to
deal with hotplug and hotunplugging being a common operation for such
devices.
--
"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-06-12 16:31 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-04 3:10 [GIT PATCH] rkfill improvements for -next Henrique de Moraes Holschuh
2008-06-04 3:10 ` [PATCH 01/12] rfkill: clarify meaning of rfkill states Henrique de Moraes Holschuh
2008-06-04 3:32 ` Pavel Roskin
2008-06-04 3:39 ` Henrique de Moraes Holschuh
2008-06-04 20:27 ` Dan Williams
2008-06-04 20:32 ` Dan Williams
2008-06-04 23:07 ` Tomas Winkler
2008-06-05 0:38 ` Henrique de Moraes Holschuh
2008-06-05 8:33 ` Tomas Winkler
2008-06-05 12:38 ` Henrique de Moraes Holschuh
2008-06-05 12:12 ` Dan Williams
2008-06-05 13:03 ` Henrique de Moraes Holschuh
2008-06-05 14:46 ` Dan Williams
2008-06-05 20:13 ` Henrique de Moraes Holschuh
2008-06-06 3:26 ` Dan Williams
2008-06-06 13:24 ` Dan Williams
2008-06-06 14:14 ` Henrique de Moraes Holschuh
2008-06-06 14:27 ` Dan Williams
2008-06-07 12:09 ` Tomas Winkler
2008-06-08 20:16 ` Matthew Garrett
2008-06-10 4:11 ` Henrique de Moraes Holschuh
2008-06-11 17:10 ` Tomas Winkler
2008-06-12 18:03 ` Henrique de Moraes Holschuh
2008-06-12 15:43 ` Dan Williams
2008-06-12 16:31 ` Henrique de Moraes Holschuh [this message]
2008-06-05 16:03 ` Ivo van Doorn
2008-06-05 16:36 ` Tomas Winkler
2008-06-05 17:42 ` Henrique de Moraes Holschuh
2008-06-05 17:54 ` Tomas Winkler
2008-06-05 20:16 ` Henrique de Moraes Holschuh
2008-06-05 17:53 ` Henrique de Moraes Holschuh
2008-06-04 3:10 ` [PATCH 02/12] rfkill: fix minor typo in kernel doc Henrique de Moraes Holschuh
2008-06-04 3:10 ` [PATCH 03/12] rfkill: handle SW_RFKILL_ALL events Henrique de Moraes Holschuh
2008-06-04 3:10 ` [PATCH 04/12] rfkill: add parameter to disable radios by default Henrique de Moraes Holschuh
2008-06-04 3:10 ` [PATCH 05/12] rfkill: add read-write rfkill switch support Henrique de Moraes Holschuh
2008-06-04 3:10 ` [PATCH 06/12] rfkill: add the WWAN radio type Henrique de Moraes Holschuh
2008-06-04 3:10 ` [PATCH 07/12] rfkill: rework suspend and resume handlers Henrique de Moraes Holschuh
2008-06-04 3:10 ` [PATCH 08/12] rfkill: add notifier chains support Henrique de Moraes Holschuh
2008-06-04 3:10 ` [PATCH 09/12] rfkill: add type string helper Henrique de Moraes Holschuh
2008-06-04 3:10 ` [PATCH 10/12] rfkill: add uevent notifications Henrique de Moraes Holschuh
2008-06-04 3:10 ` [PATCH 11/12] rfkill: do not allow userspace to override ALL RADIOS OFF Henrique de Moraes Holschuh
2008-06-04 3:10 ` [PATCH 12/12] rfkill: document rw rfkill switches and clarify input subsystem interactions Henrique de Moraes Holschuh
-- strict thread matches above, loose matches on Subject: below --
2008-06-22 15:38 [GIT PATCH] rfkill rework for 2.6.27 (v2) Henrique de Moraes Holschuh
2008-06-22 15:38 ` [PATCH 01/12] rfkill: clarify meaning of rfkill states Henrique de Moraes Holschuh
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=1213288298.11423.1258137419@webmail.messagingengine.com \
--to=hmh@hmh.eng.br \
--cc=dcbw@redhat.com \
--cc=dtor@mail.ru \
--cc=ivdoorn@gmail.com \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=mjg@redhat.com \
--cc=tomasw@gmail.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;
as well as URLs for NNTP newsgroup(s).