From: Marcel Holtmann <marcel@holtmann.org>
To: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Cc: Johannes Berg <johannes@sipsolutions.net>,
John Linville <linville@tuxdriver.com>,
linux-wireless <linux-wireless@vger.kernel.org>
Subject: Re: [PATCH] rfkill: create useful userspace interface
Date: Tue, 02 Jun 2009 10:41:49 +0200 [thread overview]
Message-ID: <1243932109.3192.73.camel@localhost.localdomain> (raw)
In-Reply-To: <4A24E3E4.1050505@tuffmail.co.uk>
Hi Alan,
> >> If you really don't wanna have rfkilld _not_ impose a policy on cold
> >> boot, then we can certainly add that. However that is part of rfkilld
> >> and not the kernel.
> >>
> >> For global states, I am questioning the platform that actually has
> >> storage for global states. All platforms that I have seen so far store
> >> individual per device based states and not the global one.
> >>
> >
> > Yeah, unfortunately the platform drivers do store/restore global state.
> > And in a sense that makes (made) sense since the default rfkill-input
> > policy was to toggle everything based on the platform button. It's icky
> > though.
> >
> > The problem with not telling rfkilld about this though is that the
> > kernel will suddenly impose a hotplug policy that rfkilld doesn't know
> > about. This might not even matter though since the _ADD will be sent
> > with that policy already applied, and if it wants to change the policy
> > rfkilld will do _CHANGE_ALL.
> >
> >
> >> If you wanna just accept what the BIOS (or other OS) tells you then that
> >> is an acceptable policy. So rfkilld will just map key input events in
> >> that case. Fine by me. Question is if we can't do that right now? I
> >> think we just can.
> >>
> >
> > Yes, we probably can do that right now, by making rfkilld start up
> > without setting a policy (CHANGE_ALL). It just doesn't know what the
> > policy is, then.
> >
> >
> >> Question is if we really have a global state here. I doubt it since all
> >> of these are device specific states. And having the BIOS or ACPI dictate
> >> what state my external Bluetooth or WiFi device is in is pointless and a
> >> total broken concept.
> >>
> >
> > Unfortunately that's how it worked before, it's part of the rfkill
> > legacy that it seems we'll have to accept. I guess we have only
> > ourselves to blame for not reviewing Henrique's rfkill implementation...
> >
> >
> >>> You propose to exclude a feature that currently works, on the grounds
> >>> that it is inherently broken. But you haven't said that this has ever
> >>> caused incorrect behavior. All you have said so far is that it is a hack.
> >>>
> >> This never worked so far. The mac80211 or Bluetooth subsystems have no
> >> RFKILL state and thus global states are not enforced. An external dongle
> >> without RFKILL support is not taken into account. You are not talking
> >> about global states here. They are all device specific. The device just
> >> happens to be a platform device builtin the system.
> >>
> >
> > Right, but rfkill does actually have a function to set the global policy
> > state (rfkill_set_global_sw_state) which some platform drivers insist on
> > calling.
> >
> > The only reason we would need the NVS_REPORT then is to detect whether
> > or not anything in the kernel called rfkill_set_global_sw_state(). If we
> > can live with just configuring rfkilld for the (arguably broken) case
> > where somebody cares about this, I'm happy with removing it.
> >
> > Hope that helps clear up your confusion.
> >
>
> The reason for drivers doing this is that otherwise, the kernel forces
> the new rfkill device to the current global default. So this API is
> used for the device to preserve it's current state - without it, we just
> throw the NVS information away and no-one can get at it.
>
> We could switch to using the non-global set_sw_state() after
> registration. But that's pretty nasty because it means most drivers
> call set_sw_state() before registration, a few drivers call it
> afterwards, and it's not going to be obvious why. Plus I think it
> bypasses EPO. So I think some sort of separate API is needed.
as I said, we might need to fix drivers that register their RFKILL
switch with the wrong state to begin with. This is a driver issue and
that can be easily fixed inside the kernel.
Forget about this EPO crap. That is just a stupid concept anyway.
> If we can also export this NVS status to userspace somehow, then
> userspace can distinguish between
>
> a) rfkill is currently unblocked, because this was the kernel default,
> so there's no reason not to override the state
> b) rfkill is currently unblocked, because this was restored from NVS,
> which hopefully reflects the most recent request from the user. rfkilld
> is still able to override this state, but it would also be reasonable
> not to.
>
> I take Marcels point, if /dev/rfkill exposes a sub-optimal interface, it
> can be very difficult to fix it. It's probably better to fix the mess
> of global states before trying to add NVS information to /dev/rfkill.
>
> Btw, I think there's a third scenario to add to the other OS / BIOS
> setup. Some hardware has a handover mechanism, right? Where the BIOS
> handles rfkill keypresses by default, and toggles the soft rfkill state,
> but allows the driver to take over when loaded. So if the user presses
> the key _before_ the driver gets loaded - they will see the wireless LED
> change, and they will expect that state change to persist when the
> driver is loaded.
We should be able to handle this properly without an extra operation in
the user interface.
Regards
Marcel
next prev parent reply other threads:[~2009-06-02 8:42 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-28 15:31 [PATCH] rfkill: create useful userspace interface Johannes Berg
2009-05-28 15:44 ` [PATCH v2] " Johannes Berg
2009-05-28 15:47 ` Marcel Holtmann
2009-05-28 15:58 ` [PATCH v3] " Johannes Berg
2009-05-29 8:38 ` [PATCH v4] " Johannes Berg
2009-05-29 10:43 ` Marcel Holtmann
2009-05-31 9:13 ` [PATCH] " Alan Jenkins
2009-05-31 9:58 ` Johannes Berg
2009-05-31 12:36 ` Henrique de Moraes Holschuh
2009-05-31 13:18 ` Alan Jenkins
2009-05-31 19:01 ` Marcel Holtmann
2009-06-01 7:33 ` Johannes Berg
2009-06-01 8:17 ` Alan Jenkins
2009-06-01 12:10 ` Johannes Berg
2009-06-01 13:05 ` Alan Jenkins
2009-06-01 14:47 ` Marcel Holtmann
2009-06-01 14:57 ` Johannes Berg
2009-06-01 16:10 ` Alan Jenkins
2009-06-01 19:44 ` Marcel Holtmann
2009-06-01 22:26 ` Alan Jenkins
2009-06-02 7:38 ` Marcel Holtmann
2009-06-02 8:01 ` Johannes Berg
2009-06-02 8:18 ` Marcel Holtmann
2009-06-03 4:03 ` Henrique de Moraes Holschuh
2009-06-03 5:57 ` Marcel Holtmann
2009-06-03 21:33 ` Henrique de Moraes Holschuh
2009-06-04 4:13 ` Marcel Holtmann
2009-06-07 12:38 ` Alan Jenkins
2009-06-07 12:57 ` Henrique de Moraes Holschuh
2009-06-07 15:28 ` Alan Jenkins
2009-06-07 17:16 ` Johannes Berg
2009-06-07 17:26 ` Alan Jenkins
2009-06-08 10:14 ` [RFC] rfkill: remove set_global_sw_state() Alan Jenkins
2009-06-08 10:32 ` Johannes Berg
2009-06-08 11:10 ` Alan Jenkins
2009-06-08 11:13 ` Johannes Berg
2009-06-08 11:15 ` Alan Jenkins
2009-06-08 11:19 ` [PATCH v2] rfkill: remove set_global_sw_state Alan Jenkins
2009-06-08 11:22 ` Alan Jenkins
2009-06-08 11:24 ` [PATCH v3] " Alan Jenkins
2009-06-08 12:27 ` [PATCH v4] " Alan Jenkins
2009-06-10 1:55 ` Henrique de Moraes Holschuh
2009-06-07 15:46 ` [PATCH] rfkill: create useful userspace interface Marcel Holtmann
2009-06-07 16:04 ` Alan Jenkins
2009-06-07 16:35 ` Marcel Holtmann
2009-06-07 17:16 ` Alan Jenkins
2009-06-07 17:25 ` Johannes Berg
2009-06-10 2:05 ` Henrique de Moraes Holschuh
2009-06-10 7:13 ` Marcel Holtmann
2009-06-10 9:06 ` Alan Jenkins
2009-06-11 12:01 ` Marcel Holtmann
2009-06-11 12:56 ` Alan Jenkins
2009-06-07 17:04 ` Dan Williams
2009-06-10 2:22 ` Henrique de Moraes Holschuh
2009-06-10 7:16 ` Marcel Holtmann
2009-06-02 8:33 ` Alan Jenkins
2009-06-02 8:41 ` Marcel Holtmann [this message]
2009-06-03 4:10 ` Henrique de Moraes Holschuh
2009-06-03 6:01 ` Marcel Holtmann
2009-06-03 21:38 ` Henrique de Moraes Holschuh
2009-06-04 4:20 ` Marcel Holtmann
2009-06-03 13:03 ` Dan Williams
2009-06-03 21:40 ` Henrique de Moraes Holschuh
2009-06-04 4:24 ` Marcel Holtmann
2009-06-07 13:54 ` Henrique de Moraes Holschuh
2009-06-07 15:36 ` Marcel Holtmann
2009-06-10 2:44 ` Henrique de Moraes Holschuh
2009-06-10 7:19 ` Marcel Holtmann
2009-06-01 12:28 ` Henrique de Moraes Holschuh
2009-06-01 12:37 ` Henrique de Moraes Holschuh
2009-06-01 12:38 ` Johannes Berg
2009-06-01 12:45 ` Henrique de Moraes Holschuh
2009-06-01 12:50 ` Johannes Berg
2009-06-01 13:33 ` Henrique de Moraes Holschuh
2009-06-01 14:29 ` Johannes Berg
2009-06-01 15:36 ` Henrique de Moraes Holschuh
2009-06-01 15:37 ` Johannes Berg
2009-06-01 15:50 ` Henrique de Moraes Holschuh
2009-06-01 15:53 ` Johannes Berg
2009-06-01 17:56 ` Henrique de Moraes Holschuh
2009-06-01 19:22 ` Johannes Berg
2009-06-01 12:43 ` Johannes Berg
2009-06-01 12:49 ` Henrique de Moraes Holschuh
2009-06-01 12:53 ` Johannes Berg
2009-05-31 13:51 ` Alan Jenkins
2009-05-31 13:54 ` Johannes Berg
2009-05-31 18:22 ` Alan Jenkins
2009-05-31 19:03 ` Marcel Holtmann
2009-05-31 21:19 ` Dan Williams
2009-06-01 7:18 ` Marcel Holtmann
2009-06-01 7:27 ` Johannes Berg
2009-06-01 7:40 ` Alan Jenkins
2009-06-01 14:41 ` Marcel Holtmann
2009-06-02 8:08 ` [PATCH v5] " Johannes Berg
2009-06-02 8:33 ` Marcel Holtmann
2009-06-02 9:41 ` [PATCH v6] " Johannes Berg
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=1243932109.3192.73.camel@localhost.localdomain \
--to=marcel@holtmann.org \
--cc=alan-jenkins@tuffmail.co.uk \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@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;
as well as URLs for NNTP newsgroup(s).