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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.