summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoão Paulo Rechi Vita <jprvita@gmail.com>2015-08-25 08:56:43 -0400
committerJohannes Berg <johannes.berg@intel.com>2015-09-04 14:26:56 +0200
commit4c0778933a3d7c35a94e8c35847acd9bb59a257d (patch)
tree2fc41561ce6db7b5012675caf4593e51f1837bc1
parent22f66895e60cfc55b92f6fa93f05bb3fbdbd0bed (diff)
downloadlinux-4c0778933a3d7c35a94e8c35847acd9bb59a257d.tar.gz
linux-4c0778933a3d7c35a94e8c35847acd9bb59a257d.tar.bz2
linux-4c0778933a3d7c35a94e8c35847acd9bb59a257d.zip
rfkill: Copy "all" global state to other types
When switching the state of all RFKill switches of type all we need to replicate the RFKILL_TYPE_ALL global state to all the other types global state, so it is used to initialize persistent RFKill switches on register. Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com> Acked-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--net/rfkill/core.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/net/rfkill/core.c b/net/rfkill/core.c
index f12149a29cb1..b41e9ea2ffff 100644
--- a/net/rfkill/core.c
+++ b/net/rfkill/core.c
@@ -341,7 +341,15 @@ static void __rfkill_switch_all(const enum rfkill_type type, bool blocked)
{
struct rfkill *rfkill;
- rfkill_global_states[type].cur = blocked;
+ if (type == RFKILL_TYPE_ALL) {
+ int i;
+
+ for (i = 0; i < NUM_RFKILL_TYPES; i++)
+ rfkill_global_states[i].cur = blocked;
+ } else {
+ rfkill_global_states[type].cur = blocked;
+ }
+
list_for_each_entry(rfkill, &rfkill_list, node) {
if (rfkill->type != type && type != RFKILL_TYPE_ALL)
continue;