diff options
-rw-r--r-- | Documentation/ABI/stable/sysfs-class-rfkill | 10 | ||||
-rw-r--r-- | net/rfkill/core.c | 35 |
2 files changed, 13 insertions, 32 deletions
diff --git a/Documentation/ABI/stable/sysfs-class-rfkill b/Documentation/ABI/stable/sysfs-class-rfkill index b91c3f37453a..097f522c33bb 100644 --- a/Documentation/ABI/stable/sysfs-class-rfkill +++ b/Documentation/ABI/stable/sysfs-class-rfkill | |||
@@ -4,7 +4,7 @@ For details to this subsystem look at Documentation/rfkill.txt. | |||
4 | 4 | ||
5 | For the deprecated /sys/class/rfkill/*/state and | 5 | For the deprecated /sys/class/rfkill/*/state and |
6 | /sys/class/rfkill/*/claim knobs of this interface look in | 6 | /sys/class/rfkill/*/claim knobs of this interface look in |
7 | Documentation/ABI/obsolte/sysfs-class-rfkill. | 7 | Documentation/ABI/obsolete/sysfs-class-rfkill. |
8 | 8 | ||
9 | What: /sys/class/rfkill | 9 | What: /sys/class/rfkill |
10 | Date: 09-Jul-2007 | 10 | Date: 09-Jul-2007 |
@@ -42,8 +42,8 @@ Values: A numeric value. | |||
42 | 1: true | 42 | 1: true |
43 | 43 | ||
44 | 44 | ||
45 | What: /sys/class/rfkill/rfkill[0-9]+/blocked_hw | 45 | What: /sys/class/rfkill/rfkill[0-9]+/hard |
46 | Date: 23-Feb-2010 | 46 | Date: 12-March-2010 |
47 | KernelVersion v2.6.34 | 47 | KernelVersion v2.6.34 |
48 | Contact: linux-wireless@vger.kernel.org | 48 | Contact: linux-wireless@vger.kernel.org |
49 | Description: Current hardblock state. This file is read only. | 49 | Description: Current hardblock state. This file is read only. |
@@ -55,8 +55,8 @@ Values: A numeric value. | |||
55 | the driver's control. | 55 | the driver's control. |
56 | 56 | ||
57 | 57 | ||
58 | What: /sys/class/rfkill/rfkill[0-9]+/blocked_sw | 58 | What: /sys/class/rfkill/rfkill[0-9]+/soft |
59 | Date: 23-Feb-2010 | 59 | Date: 12-March-2010 |
60 | KernelVersion v2.6.34 | 60 | KernelVersion v2.6.34 |
61 | Contact: linux-wireless@vger.kernel.org | 61 | Contact: linux-wireless@vger.kernel.org |
62 | Description: Current softblock state. This file is read and write. | 62 | Description: Current softblock state. This file is read and write. |
diff --git a/net/rfkill/core.c b/net/rfkill/core.c index 5f33151d70ae..7ae58b5b5a08 100644 --- a/net/rfkill/core.c +++ b/net/rfkill/core.c | |||
@@ -628,37 +628,25 @@ static ssize_t rfkill_persistent_show(struct device *dev, | |||
628 | return sprintf(buf, "%d\n", rfkill->persistent); | 628 | return sprintf(buf, "%d\n", rfkill->persistent); |
629 | } | 629 | } |
630 | 630 | ||
631 | static ssize_t rfkill_blocked_hw_show(struct device *dev, | 631 | static ssize_t rfkill_hard_show(struct device *dev, |
632 | struct device_attribute *attr, | 632 | struct device_attribute *attr, |
633 | char *buf) | 633 | char *buf) |
634 | { | 634 | { |
635 | struct rfkill *rfkill = to_rfkill(dev); | 635 | struct rfkill *rfkill = to_rfkill(dev); |
636 | unsigned long flags; | ||
637 | u32 state; | ||
638 | 636 | ||
639 | spin_lock_irqsave(&rfkill->lock, flags); | 637 | return sprintf(buf, "%d\n", (rfkill->state & RFKILL_BLOCK_HW) ? 1 : 0 ); |
640 | state = rfkill->state; | ||
641 | spin_unlock_irqrestore(&rfkill->lock, flags); | ||
642 | |||
643 | return sprintf(buf, "%d\n", (state & RFKILL_BLOCK_HW) ? 1 : 0 ); | ||
644 | } | 638 | } |
645 | 639 | ||
646 | static ssize_t rfkill_blocked_sw_show(struct device *dev, | 640 | static ssize_t rfkill_soft_show(struct device *dev, |
647 | struct device_attribute *attr, | 641 | struct device_attribute *attr, |
648 | char *buf) | 642 | char *buf) |
649 | { | 643 | { |
650 | struct rfkill *rfkill = to_rfkill(dev); | 644 | struct rfkill *rfkill = to_rfkill(dev); |
651 | unsigned long flags; | ||
652 | u32 state; | ||
653 | |||
654 | spin_lock_irqsave(&rfkill->lock, flags); | ||
655 | state = rfkill->state; | ||
656 | spin_unlock_irqrestore(&rfkill->lock, flags); | ||
657 | 645 | ||
658 | return sprintf(buf, "%d\n", (state & RFKILL_BLOCK_SW) ? 1 : 0 ); | 646 | return sprintf(buf, "%d\n", (rfkill->state & RFKILL_BLOCK_SW) ? 1 : 0 ); |
659 | } | 647 | } |
660 | 648 | ||
661 | static ssize_t rfkill_blocked_sw_store(struct device *dev, | 649 | static ssize_t rfkill_soft_store(struct device *dev, |
662 | struct device_attribute *attr, | 650 | struct device_attribute *attr, |
663 | const char *buf, size_t count) | 651 | const char *buf, size_t count) |
664 | { | 652 | { |
@@ -698,14 +686,8 @@ static ssize_t rfkill_state_show(struct device *dev, | |||
698 | char *buf) | 686 | char *buf) |
699 | { | 687 | { |
700 | struct rfkill *rfkill = to_rfkill(dev); | 688 | struct rfkill *rfkill = to_rfkill(dev); |
701 | unsigned long flags; | ||
702 | u32 state; | ||
703 | |||
704 | spin_lock_irqsave(&rfkill->lock, flags); | ||
705 | state = rfkill->state; | ||
706 | spin_unlock_irqrestore(&rfkill->lock, flags); | ||
707 | 689 | ||
708 | return sprintf(buf, "%d\n", user_state_from_blocked(state)); | 690 | return sprintf(buf, "%d\n", user_state_from_blocked(rfkill->state)); |
709 | } | 691 | } |
710 | 692 | ||
711 | static ssize_t rfkill_state_store(struct device *dev, | 693 | static ssize_t rfkill_state_store(struct device *dev, |
@@ -755,9 +737,8 @@ static struct device_attribute rfkill_dev_attrs[] = { | |||
755 | __ATTR(persistent, S_IRUGO, rfkill_persistent_show, NULL), | 737 | __ATTR(persistent, S_IRUGO, rfkill_persistent_show, NULL), |
756 | __ATTR(state, S_IRUGO|S_IWUSR, rfkill_state_show, rfkill_state_store), | 738 | __ATTR(state, S_IRUGO|S_IWUSR, rfkill_state_show, rfkill_state_store), |
757 | __ATTR(claim, S_IRUGO|S_IWUSR, rfkill_claim_show, rfkill_claim_store), | 739 | __ATTR(claim, S_IRUGO|S_IWUSR, rfkill_claim_show, rfkill_claim_store), |
758 | __ATTR(sw, S_IRUGO|S_IWUSR, rfkill_blocked_sw_show, | 740 | __ATTR(soft, S_IRUGO|S_IWUSR, rfkill_soft_show, rfkill_soft_store), |
759 | rfkill_blocked_sw_store), | 741 | __ATTR(hard, S_IRUGO, rfkill_hard_show, NULL), |
760 | __ATTR(hw, S_IRUGO, rfkill_blocked_hw_show, NULL), | ||
761 | __ATTR_NULL | 742 | __ATTR_NULL |
762 | }; | 743 | }; |
763 | 744 | ||