2009-06-16 13:54:05

by Alan Jenkins

[permalink] [raw]
Subject: [PATCH 4/4] rfkill: export persistent attribute in sysfs

This information allows userspace to implement a hybrid policy where
it can store the rfkill soft-blocked state in platform non-volatile
storage if available, and if not then file-based storage can be used.

Some users prefer platform non-volatile storage because of the behaviour
when dual-booting multiple versions of Linux, or if the rfkill setting
is changed in the BIOS setting screens, or if the BIOS responds to
wireless-toggle hotkeys itself before the relevant platform driver has
been loaded.

Signed-off-by: Alan Jenkins <[email protected]>
---
Documentation/rfkill.txt | 2 ++
include/linux/rfkill.h | 5 +++--
net/rfkill/core.c | 10 ++++++++++
3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/Documentation/rfkill.txt b/Documentation/rfkill.txt
index c8acd86..b486050 100644
--- a/Documentation/rfkill.txt
+++ b/Documentation/rfkill.txt
@@ -111,6 +111,8 @@ following attributes:

name: Name assigned by driver to this key (interface or driver name).
type: Driver type string ("wlan", "bluetooth", etc).
+ persistent: Whether the soft blocked state is initialised from
+ non-volatile storage at startup.
state: Current state of the transmitter
0: RFKILL_STATE_SOFT_BLOCKED
transmitter is turned off by software
diff --git a/include/linux/rfkill.h b/include/linux/rfkill.h
index 84b6b9c..0592552 100644
--- a/include/linux/rfkill.h
+++ b/include/linux/rfkill.h
@@ -259,8 +259,9 @@ bool rfkill_set_sw_state(struct rfkill *rfkill, bool blocked);
* userspace) of their initial state. It should only be used before
* registration.
*
- * In addition, it marks the device as "persistent". Persistent devices
- * are expected to preserve preserve their own state when suspended.
+ * In addition, it marks the device as "persistent", an attribute which
+ * can be read by userspace. Persistent devices are expected to preserve
+ * preserve their own state when suspended.
*/
void rfkill_init_sw_state(struct rfkill *rfkill, bool blocked);

diff --git a/net/rfkill/core.c b/net/rfkill/core.c
index dcf8df7..79693fe 100644
--- a/net/rfkill/core.c
+++ b/net/rfkill/core.c
@@ -610,6 +610,15 @@ static ssize_t rfkill_idx_show(struct device *dev,
return sprintf(buf, "%d\n", rfkill->idx);
}

+static ssize_t rfkill_persistent_show(struct device *dev,
+ struct device_attribute *attr,
+ char *buf)
+{
+ struct rfkill *rfkill = to_rfkill(dev);
+
+ return sprintf(buf, "%d\n", rfkill->persistent);
+}
+
static u8 user_state_from_blocked(unsigned long state)
{
if (state & RFKILL_BLOCK_HW)
@@ -668,6 +677,7 @@ static struct device_attribute rfkill_dev_attrs[] = {
__ATTR(name, S_IRUGO, rfkill_name_show, NULL),
__ATTR(type, S_IRUGO, rfkill_type_show, NULL),
__ATTR(index, S_IRUGO, rfkill_idx_show, NULL),
+ __ATTR(persistent, S_IRUGO, rfkill_persistent_show, NULL),
__ATTR(state, S_IRUGO|S_IWUSR, rfkill_state_show, rfkill_state_store),
__ATTR(claim, S_IRUGO|S_IWUSR, rfkill_claim_show, rfkill_claim_store),
__ATTR_NULL




2009-06-16 16:24:16

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH 4/4] rfkill: export persistent attribute in sysfs

Hi Alan,

> This information allows userspace to implement a hybrid policy where
> it can store the rfkill soft-blocked state in platform non-volatile
> storage if available, and if not then file-based storage can be used.
>
> Some users prefer platform non-volatile storage because of the behaviour
> when dual-booting multiple versions of Linux, or if the rfkill setting
> is changed in the BIOS setting screens, or if the BIOS responds to
> wireless-toggle hotkeys itself before the relevant platform driver has
> been loaded.
>
> Signed-off-by: Alan Jenkins <[email protected]>

as I mentioned before, I agree with doing it this way.

Acked-by: Marcel Holtmann <[email protected]>

Regards

Marcel



2009-06-18 09:38:50

by Alan Jenkins

[permalink] [raw]
Subject: Re: [PATCH 4/4] rfkill: export persistent attribute in sysfs

Henrique de Moraes Holschuh wrote:
> On Tue, 16 Jun 2009, Alan Jenkins wrote:
>
>> + * can be read by userspace. Persistent devices are expected to preserve
>> + * preserve their own state when suspended.
>>
>
> You have "preserve" twice in there.
>
> Other than that,
>
> Acked-by: Henrique de Moraes Holschuh <[email protected]>
>

I see the patches are already in wireless-testing and -next. I'll send
an incremental patch to fix this one comment.



Subject: Re: [PATCH 4/4] rfkill: export persistent attribute in sysfs

On Tue, 16 Jun 2009, Alan Jenkins wrote:
> + * can be read by userspace. Persistent devices are expected to preserve
> + * preserve their own state when suspended.

You have "preserve" twice in there.

Other than that,

Acked-by: Henrique de Moraes Holschuh <[email protected]>

--
"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