aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2018-07-02 16:05:21 -0400
committerJacek Anaszewski <jacek.anaszewski@gmail.com>2018-07-05 17:21:10 -0400
commit2282e125a406e09331c5a785e3df29035c99a607 (patch)
treeb5936ee2bde7c85bf71aaff259026857b2bda6d9 /net
parent033692eb3ec8305f6e9998b297aaec6899680637 (diff)
leds: triggers: let struct led_trigger::activate() return an error code
Given that activating a trigger can fail, let the callback return an indication. This prevents to have a trigger active according to the "trigger" sysfs attribute but not functional. All users are changed accordingly to return 0 for now. There is no intended change in behaviour. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Acked-by: Pavel Machek <pavel@ucw.cz> Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Diffstat (limited to 'net')
-rw-r--r--net/bluetooth/leds.c6
-rw-r--r--net/mac80211/led.c20
-rw-r--r--net/rfkill/core.c4
3 files changed, 22 insertions, 8 deletions
diff --git a/net/bluetooth/leds.c b/net/bluetooth/leds.c
index cb670b5594eb..6d59a5023231 100644
--- a/net/bluetooth/leds.c
+++ b/net/bluetooth/leds.c
@@ -43,7 +43,7 @@ void hci_leds_update_powered(struct hci_dev *hdev, bool enabled)
43 led_trigger_event(bt_power_led_trigger, enabled ? LED_FULL : LED_OFF); 43 led_trigger_event(bt_power_led_trigger, enabled ? LED_FULL : LED_OFF);
44} 44}
45 45
46static void power_activate(struct led_classdev *led_cdev) 46static int power_activate(struct led_classdev *led_cdev)
47{ 47{
48 struct hci_basic_led_trigger *htrig; 48 struct hci_basic_led_trigger *htrig;
49 bool powered; 49 bool powered;
@@ -52,10 +52,12 @@ static void power_activate(struct led_classdev *led_cdev)
52 powered = test_bit(HCI_UP, &htrig->hdev->flags); 52 powered = test_bit(HCI_UP, &htrig->hdev->flags);
53 53
54 led_trigger_event(led_cdev->trigger, powered ? LED_FULL : LED_OFF); 54 led_trigger_event(led_cdev->trigger, powered ? LED_FULL : LED_OFF);
55
56 return 0;
55} 57}
56 58
57static struct led_trigger *led_allocate_basic(struct hci_dev *hdev, 59static struct led_trigger *led_allocate_basic(struct hci_dev *hdev,
58 void (*activate)(struct led_classdev *led_cdev), 60 int (*activate)(struct led_classdev *led_cdev),
59 const char *name) 61 const char *name)
60{ 62{
61 struct hci_basic_led_trigger *htrig; 63 struct hci_basic_led_trigger *htrig;
diff --git a/net/mac80211/led.c b/net/mac80211/led.c
index ba0b507ea691..d6c66fc19716 100644
--- a/net/mac80211/led.c
+++ b/net/mac80211/led.c
@@ -52,13 +52,15 @@ void ieee80211_free_led_names(struct ieee80211_local *local)
52 kfree(local->radio_led.name); 52 kfree(local->radio_led.name);
53} 53}
54 54
55static void ieee80211_tx_led_activate(struct led_classdev *led_cdev) 55static int ieee80211_tx_led_activate(struct led_classdev *led_cdev)
56{ 56{
57 struct ieee80211_local *local = container_of(led_cdev->trigger, 57 struct ieee80211_local *local = container_of(led_cdev->trigger,
58 struct ieee80211_local, 58 struct ieee80211_local,
59 tx_led); 59 tx_led);
60 60
61 atomic_inc(&local->tx_led_active); 61 atomic_inc(&local->tx_led_active);
62
63 return 0;
62} 64}
63 65
64static void ieee80211_tx_led_deactivate(struct led_classdev *led_cdev) 66static void ieee80211_tx_led_deactivate(struct led_classdev *led_cdev)
@@ -70,13 +72,15 @@ static void ieee80211_tx_led_deactivate(struct led_classdev *led_cdev)
70 atomic_dec(&local->tx_led_active); 72 atomic_dec(&local->tx_led_active);
71} 73}
72 74
73static void ieee80211_rx_led_activate(struct led_classdev *led_cdev) 75static int ieee80211_rx_led_activate(struct led_classdev *led_cdev)
74{ 76{
75 struct ieee80211_local *local = container_of(led_cdev->trigger, 77 struct ieee80211_local *local = container_of(led_cdev->trigger,
76 struct ieee80211_local, 78 struct ieee80211_local,
77 rx_led); 79 rx_led);
78 80
79 atomic_inc(&local->rx_led_active); 81 atomic_inc(&local->rx_led_active);
82
83 return 0;
80} 84}
81 85
82static void ieee80211_rx_led_deactivate(struct led_classdev *led_cdev) 86static void ieee80211_rx_led_deactivate(struct led_classdev *led_cdev)
@@ -88,13 +92,15 @@ static void ieee80211_rx_led_deactivate(struct led_classdev *led_cdev)
88 atomic_dec(&local->rx_led_active); 92 atomic_dec(&local->rx_led_active);
89} 93}
90 94
91static void ieee80211_assoc_led_activate(struct led_classdev *led_cdev) 95static int ieee80211_assoc_led_activate(struct led_classdev *led_cdev)
92{ 96{
93 struct ieee80211_local *local = container_of(led_cdev->trigger, 97 struct ieee80211_local *local = container_of(led_cdev->trigger,
94 struct ieee80211_local, 98 struct ieee80211_local,
95 assoc_led); 99 assoc_led);
96 100
97 atomic_inc(&local->assoc_led_active); 101 atomic_inc(&local->assoc_led_active);
102
103 return 0;
98} 104}
99 105
100static void ieee80211_assoc_led_deactivate(struct led_classdev *led_cdev) 106static void ieee80211_assoc_led_deactivate(struct led_classdev *led_cdev)
@@ -106,13 +112,15 @@ static void ieee80211_assoc_led_deactivate(struct led_classdev *led_cdev)
106 atomic_dec(&local->assoc_led_active); 112 atomic_dec(&local->assoc_led_active);
107} 113}
108 114
109static void ieee80211_radio_led_activate(struct led_classdev *led_cdev) 115static int ieee80211_radio_led_activate(struct led_classdev *led_cdev)
110{ 116{
111 struct ieee80211_local *local = container_of(led_cdev->trigger, 117 struct ieee80211_local *local = container_of(led_cdev->trigger,
112 struct ieee80211_local, 118 struct ieee80211_local,
113 radio_led); 119 radio_led);
114 120
115 atomic_inc(&local->radio_led_active); 121 atomic_inc(&local->radio_led_active);
122
123 return 0;
116} 124}
117 125
118static void ieee80211_radio_led_deactivate(struct led_classdev *led_cdev) 126static void ieee80211_radio_led_deactivate(struct led_classdev *led_cdev)
@@ -124,13 +132,15 @@ static void ieee80211_radio_led_deactivate(struct led_classdev *led_cdev)
124 atomic_dec(&local->radio_led_active); 132 atomic_dec(&local->radio_led_active);
125} 133}
126 134
127static void ieee80211_tpt_led_activate(struct led_classdev *led_cdev) 135static int ieee80211_tpt_led_activate(struct led_classdev *led_cdev)
128{ 136{
129 struct ieee80211_local *local = container_of(led_cdev->trigger, 137 struct ieee80211_local *local = container_of(led_cdev->trigger,
130 struct ieee80211_local, 138 struct ieee80211_local,
131 tpt_led); 139 tpt_led);
132 140
133 atomic_inc(&local->tpt_led_active); 141 atomic_inc(&local->tpt_led_active);
142
143 return 0;
134} 144}
135 145
136static void ieee80211_tpt_led_deactivate(struct led_classdev *led_cdev) 146static void ieee80211_tpt_led_deactivate(struct led_classdev *led_cdev)
diff --git a/net/rfkill/core.c b/net/rfkill/core.c
index a7a4e6ff9be2..1355f5ca8d22 100644
--- a/net/rfkill/core.c
+++ b/net/rfkill/core.c
@@ -141,13 +141,15 @@ static void rfkill_led_trigger_event(struct rfkill *rfkill)
141 led_trigger_event(trigger, LED_FULL); 141 led_trigger_event(trigger, LED_FULL);
142} 142}
143 143
144static void rfkill_led_trigger_activate(struct led_classdev *led) 144static int rfkill_led_trigger_activate(struct led_classdev *led)
145{ 145{
146 struct rfkill *rfkill; 146 struct rfkill *rfkill;
147 147
148 rfkill = container_of(led->trigger, struct rfkill, led_trigger); 148 rfkill = container_of(led->trigger, struct rfkill, led_trigger);
149 149
150 rfkill_led_trigger_event(rfkill); 150 rfkill_led_trigger_event(rfkill);
151
152 return 0;
151} 153}
152 154
153const char *rfkill_get_led_trigger_name(struct rfkill *rfkill) 155const char *rfkill_get_led_trigger_name(struct rfkill *rfkill)