Skip to content

Commit 26f7327

Browse files
dangowrtlag-linaro
authored andcommitted
Revert "leds: trigger: netdev: Configure LED blink interval for HW offload"
This reverts commit c629c97. While .led_blink_set() would previously put an LED into an unconditional permanently blinking state, the offending commit now uses same operation to (also?) set the blink timing of the netdev trigger when offloading. This breaks many if not all of the existing PHY drivers which offer offloading LED operations, as those drivers would just put the LED into blinking state after .led_blink_set() has been called. Unfortunately the change even made it into stable kernels for unknown reasons, so it should be reverted there as well. Fixes: c629c97 ("leds: trigger: netdev: Configure LED blink interval for HW offload") Link: https://lore.kernel.org/linux-leds/[email protected]/T/#m9d6fe81bbcb273e59f12bbedbd633edd32118387 Suggested-by: Andrew Lunn <[email protected]> Cc: [email protected] Signed-off-by: Daniel Golle <[email protected]> Reviewed-by: Andrew Lunn <[email protected]> Link: https://lore.kernel.org/r/6dcc77ee1c9676891d6250d8994850f521426a0f.1752334655.git.daniel@makrotopia.org Signed-off-by: Lee Jones <[email protected]>
1 parent 239afba commit 26f7327

File tree

1 file changed

+3
-13
lines changed

1 file changed

+3
-13
lines changed

drivers/leds/trigger/ledtrig-netdev.c

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ struct led_netdev_data {
6868
unsigned int last_activity;
6969

7070
unsigned long mode;
71-
unsigned long blink_delay;
7271
int link_speed;
7372
__ETHTOOL_DECLARE_LINK_MODE_MASK(supported_link_modes);
7473
u8 duplex;
@@ -87,10 +86,6 @@ static void set_baseline_state(struct led_netdev_data *trigger_data)
8786
/* Already validated, hw control is possible with the requested mode */
8887
if (trigger_data->hw_control) {
8988
led_cdev->hw_control_set(led_cdev, trigger_data->mode);
90-
if (led_cdev->blink_set) {
91-
led_cdev->blink_set(led_cdev, &trigger_data->blink_delay,
92-
&trigger_data->blink_delay);
93-
}
9489

9590
return;
9691
}
@@ -459,11 +454,10 @@ static ssize_t interval_store(struct device *dev,
459454
size_t size)
460455
{
461456
struct led_netdev_data *trigger_data = led_trigger_get_drvdata(dev);
462-
struct led_classdev *led_cdev = trigger_data->led_cdev;
463457
unsigned long value;
464458
int ret;
465459

466-
if (trigger_data->hw_control && !led_cdev->blink_set)
460+
if (trigger_data->hw_control)
467461
return -EINVAL;
468462

469463
ret = kstrtoul(buf, 0, &value);
@@ -472,13 +466,9 @@ static ssize_t interval_store(struct device *dev,
472466

473467
/* impose some basic bounds on the timer interval */
474468
if (value >= 5 && value <= 10000) {
475-
if (trigger_data->hw_control) {
476-
trigger_data->blink_delay = value;
477-
} else {
478-
cancel_delayed_work_sync(&trigger_data->work);
469+
cancel_delayed_work_sync(&trigger_data->work);
479470

480-
atomic_set(&trigger_data->interval, msecs_to_jiffies(value));
481-
}
471+
atomic_set(&trigger_data->interval, msecs_to_jiffies(value));
482472
set_baseline_state(trigger_data); /* resets timer */
483473
}
484474

0 commit comments

Comments
 (0)