forked from Openwrt/openwrt
0a4b309f41
Backport initial LEDs hw control support. Currently this is limited to only rx/tx and link events for the netdev trigger but the API got accepted and the additional modes are working on and will be backported later. Refresh every patch and add the additional config flag for QCA8K new LEDs support. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
88 lines
3.0 KiB
Diff
88 lines
3.0 KiB
Diff
From e2f24cb1b5daf9a4f6f3ba574c1fa74aab9807a4 Mon Sep 17 00:00:00 2001
|
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
|
Date: Wed, 19 Apr 2023 23:07:40 +0200
|
|
Subject: [PATCH 2/5] leds: trigger: netdev: Drop NETDEV_LED_MODE_LINKUP from
|
|
mode
|
|
|
|
Putting NETDEV_LED_MODE_LINKUP in the same list of the netdev trigger
|
|
modes is wrong as it's used to set the link state of the device and not
|
|
to set a blink mode as it's done by NETDEV_LED_LINK, NETDEV_LED_TX and
|
|
NETDEV_LED_RX. It's also wrong to put this state in the same bitmap of the
|
|
netdev trigger mode and should be external to it.
|
|
|
|
Drop NETDEV_LED_MODE_LINKUP from mode list and convert to a simple bool
|
|
that will be true or false based on the carrier link. No functional
|
|
change intended.
|
|
|
|
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
|
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
|
Signed-off-by: Lee Jones <lee@kernel.org>
|
|
Link: https://lore.kernel.org/r/20230419210743.3594-3-ansuelsmth@gmail.com
|
|
---
|
|
drivers/leds/trigger/ledtrig-netdev.c | 19 ++++++++-----------
|
|
1 file changed, 8 insertions(+), 11 deletions(-)
|
|
|
|
--- a/drivers/leds/trigger/ledtrig-netdev.c
|
|
+++ b/drivers/leds/trigger/ledtrig-netdev.c
|
|
@@ -50,10 +50,10 @@ struct led_netdev_data {
|
|
unsigned int last_activity;
|
|
|
|
unsigned long mode;
|
|
+ bool carrier_link_up;
|
|
#define NETDEV_LED_LINK 0
|
|
#define NETDEV_LED_TX 1
|
|
#define NETDEV_LED_RX 2
|
|
-#define NETDEV_LED_MODE_LINKUP 3
|
|
};
|
|
|
|
enum netdev_led_attr {
|
|
@@ -73,9 +73,9 @@ static void set_baseline_state(struct le
|
|
if (!led_cdev->blink_brightness)
|
|
led_cdev->blink_brightness = led_cdev->max_brightness;
|
|
|
|
- if (!test_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode))
|
|
+ if (!trigger_data->carrier_link_up) {
|
|
led_set_brightness(led_cdev, LED_OFF);
|
|
- else {
|
|
+ } else {
|
|
if (test_bit(NETDEV_LED_LINK, &trigger_data->mode))
|
|
led_set_brightness(led_cdev,
|
|
led_cdev->blink_brightness);
|
|
@@ -131,10 +131,9 @@ static ssize_t device_name_store(struct
|
|
trigger_data->net_dev =
|
|
dev_get_by_name(&init_net, trigger_data->device_name);
|
|
|
|
- clear_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode);
|
|
+ trigger_data->carrier_link_up = false;
|
|
if (trigger_data->net_dev != NULL)
|
|
- if (netif_carrier_ok(trigger_data->net_dev))
|
|
- set_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode);
|
|
+ trigger_data->carrier_link_up = netif_carrier_ok(trigger_data->net_dev);
|
|
|
|
trigger_data->last_activity = 0;
|
|
|
|
@@ -315,11 +314,10 @@ static int netdev_trig_notify(struct not
|
|
|
|
spin_lock_bh(&trigger_data->lock);
|
|
|
|
- clear_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode);
|
|
+ trigger_data->carrier_link_up = false;
|
|
switch (evt) {
|
|
case NETDEV_CHANGENAME:
|
|
- if (netif_carrier_ok(dev))
|
|
- set_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode);
|
|
+ trigger_data->carrier_link_up = netif_carrier_ok(dev);
|
|
fallthrough;
|
|
case NETDEV_REGISTER:
|
|
if (trigger_data->net_dev)
|
|
@@ -333,8 +331,7 @@ static int netdev_trig_notify(struct not
|
|
break;
|
|
case NETDEV_UP:
|
|
case NETDEV_CHANGE:
|
|
- if (netif_carrier_ok(dev))
|
|
- set_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode);
|
|
+ trigger_data->carrier_link_up = netif_carrier_ok(dev);
|
|
break;
|
|
}
|
|
|