generic: 6.1: backport patch adding more speed modes to LED netdev trigger
[openwrt/staging/svanheule.git] / target / linux / generic / backport-6.1 / 834-v6.8-leds-trigger-netdev-Extend-speeds-up-to-10G.patch
1 From bc8e1da69a68d9871773b657d18400a7941cbdef Mon Sep 17 00:00:00 2001
2 From: Daniel Golle <daniel@makrotopia.org>
3 Date: Tue, 28 Nov 2023 04:00:10 +0000
4 Subject: [PATCH] leds: trigger: netdev: Extend speeds up to 10G
5
6 Add 2.5G, 5G and 10G as available speeds to the netdev LED trigger.
7
8 Signed-off-by: Daniel Golle <daniel@makrotopia.org>
9 Reviewed-by: Andrew Lunn <andrew@lunn.ch>
10 Link: https://lore.kernel.org/r/99e7d3304c6bba7f4863a4a80764a869855f2085.1701143925.git.daniel@makrotopia.org
11 Signed-off-by: Lee Jones <lee@kernel.org>
12 ---
13 drivers/leds/trigger/ledtrig-netdev.c | 32 ++++++++++++++++++++++++++-
14 include/linux/leds.h | 3 +++
15 2 files changed, 34 insertions(+), 1 deletion(-)
16
17 --- a/drivers/leds/trigger/ledtrig-netdev.c
18 +++ b/drivers/leds/trigger/ledtrig-netdev.c
19 @@ -99,6 +99,18 @@ static void set_baseline_state(struct le
20 trigger_data->link_speed == SPEED_1000)
21 blink_on = true;
22
23 + if (test_bit(TRIGGER_NETDEV_LINK_2500, &trigger_data->mode) &&
24 + trigger_data->link_speed == SPEED_2500)
25 + blink_on = true;
26 +
27 + if (test_bit(TRIGGER_NETDEV_LINK_5000, &trigger_data->mode) &&
28 + trigger_data->link_speed == SPEED_5000)
29 + blink_on = true;
30 +
31 + if (test_bit(TRIGGER_NETDEV_LINK_10000, &trigger_data->mode) &&
32 + trigger_data->link_speed == SPEED_10000)
33 + blink_on = true;
34 +
35 if (test_bit(TRIGGER_NETDEV_HALF_DUPLEX, &trigger_data->mode) &&
36 trigger_data->duplex == DUPLEX_HALF)
37 blink_on = true;
38 @@ -286,6 +298,9 @@ static ssize_t netdev_led_attr_show(stru
39 case TRIGGER_NETDEV_LINK_10:
40 case TRIGGER_NETDEV_LINK_100:
41 case TRIGGER_NETDEV_LINK_1000:
42 + case TRIGGER_NETDEV_LINK_2500:
43 + case TRIGGER_NETDEV_LINK_5000:
44 + case TRIGGER_NETDEV_LINK_10000:
45 case TRIGGER_NETDEV_HALF_DUPLEX:
46 case TRIGGER_NETDEV_FULL_DUPLEX:
47 case TRIGGER_NETDEV_TX:
48 @@ -316,6 +331,9 @@ static ssize_t netdev_led_attr_store(str
49 case TRIGGER_NETDEV_LINK_10:
50 case TRIGGER_NETDEV_LINK_100:
51 case TRIGGER_NETDEV_LINK_1000:
52 + case TRIGGER_NETDEV_LINK_2500:
53 + case TRIGGER_NETDEV_LINK_5000:
54 + case TRIGGER_NETDEV_LINK_10000:
55 case TRIGGER_NETDEV_HALF_DUPLEX:
56 case TRIGGER_NETDEV_FULL_DUPLEX:
57 case TRIGGER_NETDEV_TX:
58 @@ -334,7 +352,10 @@ static ssize_t netdev_led_attr_store(str
59 if (test_bit(TRIGGER_NETDEV_LINK, &mode) &&
60 (test_bit(TRIGGER_NETDEV_LINK_10, &mode) ||
61 test_bit(TRIGGER_NETDEV_LINK_100, &mode) ||
62 - test_bit(TRIGGER_NETDEV_LINK_1000, &mode)))
63 + test_bit(TRIGGER_NETDEV_LINK_1000, &mode) ||
64 + test_bit(TRIGGER_NETDEV_LINK_2500, &mode) ||
65 + test_bit(TRIGGER_NETDEV_LINK_5000, &mode) ||
66 + test_bit(TRIGGER_NETDEV_LINK_10000, &mode)))
67 return -EINVAL;
68
69 cancel_delayed_work_sync(&trigger_data->work);
70 @@ -364,6 +385,9 @@ DEFINE_NETDEV_TRIGGER(link, TRIGGER_NETD
71 DEFINE_NETDEV_TRIGGER(link_10, TRIGGER_NETDEV_LINK_10);
72 DEFINE_NETDEV_TRIGGER(link_100, TRIGGER_NETDEV_LINK_100);
73 DEFINE_NETDEV_TRIGGER(link_1000, TRIGGER_NETDEV_LINK_1000);
74 +DEFINE_NETDEV_TRIGGER(link_2500, TRIGGER_NETDEV_LINK_2500);
75 +DEFINE_NETDEV_TRIGGER(link_5000, TRIGGER_NETDEV_LINK_5000);
76 +DEFINE_NETDEV_TRIGGER(link_10000, TRIGGER_NETDEV_LINK_10000);
77 DEFINE_NETDEV_TRIGGER(half_duplex, TRIGGER_NETDEV_HALF_DUPLEX);
78 DEFINE_NETDEV_TRIGGER(full_duplex, TRIGGER_NETDEV_FULL_DUPLEX);
79 DEFINE_NETDEV_TRIGGER(tx, TRIGGER_NETDEV_TX);
80 @@ -422,6 +446,9 @@ static struct attribute *netdev_trig_att
81 &dev_attr_link_10.attr,
82 &dev_attr_link_100.attr,
83 &dev_attr_link_1000.attr,
84 + &dev_attr_link_2500.attr,
85 + &dev_attr_link_5000.attr,
86 + &dev_attr_link_10000.attr,
87 &dev_attr_full_duplex.attr,
88 &dev_attr_half_duplex.attr,
89 &dev_attr_rx.attr,
90 @@ -519,6 +546,9 @@ static void netdev_trig_work(struct work
91 test_bit(TRIGGER_NETDEV_LINK_10, &trigger_data->mode) ||
92 test_bit(TRIGGER_NETDEV_LINK_100, &trigger_data->mode) ||
93 test_bit(TRIGGER_NETDEV_LINK_1000, &trigger_data->mode) ||
94 + test_bit(TRIGGER_NETDEV_LINK_2500, &trigger_data->mode) ||
95 + test_bit(TRIGGER_NETDEV_LINK_5000, &trigger_data->mode) ||
96 + test_bit(TRIGGER_NETDEV_LINK_10000, &trigger_data->mode) ||
97 test_bit(TRIGGER_NETDEV_HALF_DUPLEX, &trigger_data->mode) ||
98 test_bit(TRIGGER_NETDEV_FULL_DUPLEX, &trigger_data->mode);
99 interval = jiffies_to_msecs(
100 --- a/include/linux/leds.h
101 +++ b/include/linux/leds.h
102 @@ -533,6 +533,9 @@ enum led_trigger_netdev_modes {
103 TRIGGER_NETDEV_LINK_10,
104 TRIGGER_NETDEV_LINK_100,
105 TRIGGER_NETDEV_LINK_1000,
106 + TRIGGER_NETDEV_LINK_2500,
107 + TRIGGER_NETDEV_LINK_5000,
108 + TRIGGER_NETDEV_LINK_10000,
109 TRIGGER_NETDEV_HALF_DUPLEX,
110 TRIGGER_NETDEV_FULL_DUPLEX,
111 TRIGGER_NETDEV_TX,