aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/backport-5.15/817-v6.5-02-leds-trigger-netdev-Drop-NETDEV_LED_MODE_LINKUP-from.patch
diff options
context:
space:
mode:
authorChristian Marangi <ansuelsmth@gmail.com>2023-06-04 04:26:59 +0200
committerDaniel Golle <daniel@makrotopia.org>2023-09-04 23:00:34 +0100
commitcf08db988baca64b878f1887d13e2fb79a708d8c (patch)
treeb0e70dfa0d51212b0ddc011383431d97138a5fe4 /target/linux/generic/backport-5.15/817-v6.5-02-leds-trigger-netdev-Drop-NETDEV_LED_MODE_LINKUP-from.patch
parente685162a78c07d373bd7b621a716465970680bae (diff)
downloadupstream-cf08db988baca64b878f1887d13e2fb79a708d8c.tar.gz
upstream-cf08db988baca64b878f1887d13e2fb79a708d8c.tar.bz2
upstream-cf08db988baca64b878f1887d13e2fb79a708d8c.zip
generic: backport initial LEDs hw control support
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> Signed-off-by: Daniel Golle <daniel@makrotopia.org> (cherry picked from commit 0a4b309f41062ef40706162ae53b6428982a0685)
Diffstat (limited to 'target/linux/generic/backport-5.15/817-v6.5-02-leds-trigger-netdev-Drop-NETDEV_LED_MODE_LINKUP-from.patch')
-rw-r--r--target/linux/generic/backport-5.15/817-v6.5-02-leds-trigger-netdev-Drop-NETDEV_LED_MODE_LINKUP-from.patch87
1 files changed, 87 insertions, 0 deletions
diff --git a/target/linux/generic/backport-5.15/817-v6.5-02-leds-trigger-netdev-Drop-NETDEV_LED_MODE_LINKUP-from.patch b/target/linux/generic/backport-5.15/817-v6.5-02-leds-trigger-netdev-Drop-NETDEV_LED_MODE_LINKUP-from.patch
new file mode 100644
index 0000000000..3170c26058
--- /dev/null
+++ b/target/linux/generic/backport-5.15/817-v6.5-02-leds-trigger-netdev-Drop-NETDEV_LED_MODE_LINKUP-from.patch
@@ -0,0 +1,87 @@
+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;
+ }
+