mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-09-18 22:59:29 +02:00
leds: trigger: netdev: Extend speeds up to 100G
Add 25G, 40G, 50G, and 100G as available speeds to the netdev LED trigger. Signed-off-by: Mike Marciniszyn (Meta) <mike.marciniszyn@gmail.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Link: https://patch.msgid.link/20260520200337.204431-2-mike.marciniszyn@gmail.com Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
committed by
Lee Jones
parent
782cca1ac6
commit
7ddc04d1bd
@@ -129,6 +129,22 @@ static void set_baseline_state(struct led_netdev_data *trigger_data)
|
||||
trigger_data->link_speed == SPEED_10000)
|
||||
blink_on = true;
|
||||
|
||||
if (test_bit(TRIGGER_NETDEV_LINK_25000, &trigger_data->mode) &&
|
||||
trigger_data->link_speed == SPEED_25000)
|
||||
blink_on = true;
|
||||
|
||||
if (test_bit(TRIGGER_NETDEV_LINK_40000, &trigger_data->mode) &&
|
||||
trigger_data->link_speed == SPEED_40000)
|
||||
blink_on = true;
|
||||
|
||||
if (test_bit(TRIGGER_NETDEV_LINK_50000, &trigger_data->mode) &&
|
||||
trigger_data->link_speed == SPEED_50000)
|
||||
blink_on = true;
|
||||
|
||||
if (test_bit(TRIGGER_NETDEV_LINK_100000, &trigger_data->mode) &&
|
||||
trigger_data->link_speed == SPEED_100000)
|
||||
blink_on = true;
|
||||
|
||||
if (test_bit(TRIGGER_NETDEV_HALF_DUPLEX, &trigger_data->mode) &&
|
||||
trigger_data->duplex == DUPLEX_HALF)
|
||||
blink_on = true;
|
||||
@@ -342,6 +358,10 @@ static ssize_t netdev_led_attr_show(struct device *dev, char *buf,
|
||||
case TRIGGER_NETDEV_LINK_2500:
|
||||
case TRIGGER_NETDEV_LINK_5000:
|
||||
case TRIGGER_NETDEV_LINK_10000:
|
||||
case TRIGGER_NETDEV_LINK_25000:
|
||||
case TRIGGER_NETDEV_LINK_40000:
|
||||
case TRIGGER_NETDEV_LINK_50000:
|
||||
case TRIGGER_NETDEV_LINK_100000:
|
||||
case TRIGGER_NETDEV_HALF_DUPLEX:
|
||||
case TRIGGER_NETDEV_FULL_DUPLEX:
|
||||
case TRIGGER_NETDEV_TX:
|
||||
@@ -378,6 +398,10 @@ static ssize_t netdev_led_attr_store(struct device *dev, const char *buf,
|
||||
case TRIGGER_NETDEV_LINK_2500:
|
||||
case TRIGGER_NETDEV_LINK_5000:
|
||||
case TRIGGER_NETDEV_LINK_10000:
|
||||
case TRIGGER_NETDEV_LINK_25000:
|
||||
case TRIGGER_NETDEV_LINK_40000:
|
||||
case TRIGGER_NETDEV_LINK_50000:
|
||||
case TRIGGER_NETDEV_LINK_100000:
|
||||
case TRIGGER_NETDEV_HALF_DUPLEX:
|
||||
case TRIGGER_NETDEV_FULL_DUPLEX:
|
||||
case TRIGGER_NETDEV_TX:
|
||||
@@ -401,7 +425,11 @@ static ssize_t netdev_led_attr_store(struct device *dev, const char *buf,
|
||||
test_bit(TRIGGER_NETDEV_LINK_1000, &mode) ||
|
||||
test_bit(TRIGGER_NETDEV_LINK_2500, &mode) ||
|
||||
test_bit(TRIGGER_NETDEV_LINK_5000, &mode) ||
|
||||
test_bit(TRIGGER_NETDEV_LINK_10000, &mode)))
|
||||
test_bit(TRIGGER_NETDEV_LINK_10000, &mode) ||
|
||||
test_bit(TRIGGER_NETDEV_LINK_25000, &mode) ||
|
||||
test_bit(TRIGGER_NETDEV_LINK_40000, &mode) ||
|
||||
test_bit(TRIGGER_NETDEV_LINK_50000, &mode) ||
|
||||
test_bit(TRIGGER_NETDEV_LINK_100000, &mode)))
|
||||
return -EINVAL;
|
||||
|
||||
cancel_delayed_work_sync(&trigger_data->work);
|
||||
@@ -438,6 +466,10 @@ DEFINE_NETDEV_TRIGGER(link_1000, TRIGGER_NETDEV_LINK_1000);
|
||||
DEFINE_NETDEV_TRIGGER(link_2500, TRIGGER_NETDEV_LINK_2500);
|
||||
DEFINE_NETDEV_TRIGGER(link_5000, TRIGGER_NETDEV_LINK_5000);
|
||||
DEFINE_NETDEV_TRIGGER(link_10000, TRIGGER_NETDEV_LINK_10000);
|
||||
DEFINE_NETDEV_TRIGGER(link_25000, TRIGGER_NETDEV_LINK_25000);
|
||||
DEFINE_NETDEV_TRIGGER(link_40000, TRIGGER_NETDEV_LINK_40000);
|
||||
DEFINE_NETDEV_TRIGGER(link_50000, TRIGGER_NETDEV_LINK_50000);
|
||||
DEFINE_NETDEV_TRIGGER(link_100000, TRIGGER_NETDEV_LINK_100000);
|
||||
DEFINE_NETDEV_TRIGGER(half_duplex, TRIGGER_NETDEV_HALF_DUPLEX);
|
||||
DEFINE_NETDEV_TRIGGER(full_duplex, TRIGGER_NETDEV_FULL_DUPLEX);
|
||||
DEFINE_NETDEV_TRIGGER(tx, TRIGGER_NETDEV_TX);
|
||||
@@ -526,6 +558,10 @@ static umode_t netdev_trig_link_speed_visible(struct kobject *kobj,
|
||||
CHECK_LINK_MODE_ATTR(2500);
|
||||
CHECK_LINK_MODE_ATTR(5000);
|
||||
CHECK_LINK_MODE_ATTR(10000);
|
||||
CHECK_LINK_MODE_ATTR(25000);
|
||||
CHECK_LINK_MODE_ATTR(40000);
|
||||
CHECK_LINK_MODE_ATTR(50000);
|
||||
CHECK_LINK_MODE_ATTR(100000);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -538,6 +574,10 @@ static struct attribute *netdev_trig_link_speed_attrs[] = {
|
||||
&dev_attr_link_2500.attr,
|
||||
&dev_attr_link_5000.attr,
|
||||
&dev_attr_link_10000.attr,
|
||||
&dev_attr_link_25000.attr,
|
||||
&dev_attr_link_40000.attr,
|
||||
&dev_attr_link_50000.attr,
|
||||
&dev_attr_link_100000.attr,
|
||||
NULL
|
||||
};
|
||||
|
||||
@@ -673,6 +713,10 @@ static void netdev_trig_work(struct work_struct *work)
|
||||
test_bit(TRIGGER_NETDEV_LINK_2500, &trigger_data->mode) ||
|
||||
test_bit(TRIGGER_NETDEV_LINK_5000, &trigger_data->mode) ||
|
||||
test_bit(TRIGGER_NETDEV_LINK_10000, &trigger_data->mode) ||
|
||||
test_bit(TRIGGER_NETDEV_LINK_25000, &trigger_data->mode) ||
|
||||
test_bit(TRIGGER_NETDEV_LINK_40000, &trigger_data->mode) ||
|
||||
test_bit(TRIGGER_NETDEV_LINK_50000, &trigger_data->mode) ||
|
||||
test_bit(TRIGGER_NETDEV_LINK_100000, &trigger_data->mode) ||
|
||||
test_bit(TRIGGER_NETDEV_HALF_DUPLEX, &trigger_data->mode) ||
|
||||
test_bit(TRIGGER_NETDEV_FULL_DUPLEX, &trigger_data->mode);
|
||||
interval = jiffies_to_msecs(
|
||||
|
||||
@@ -607,6 +607,10 @@ enum led_trigger_netdev_modes {
|
||||
TRIGGER_NETDEV_LINK_2500,
|
||||
TRIGGER_NETDEV_LINK_5000,
|
||||
TRIGGER_NETDEV_LINK_10000,
|
||||
TRIGGER_NETDEV_LINK_25000,
|
||||
TRIGGER_NETDEV_LINK_40000,
|
||||
TRIGGER_NETDEV_LINK_50000,
|
||||
TRIGGER_NETDEV_LINK_100000,
|
||||
TRIGGER_NETDEV_HALF_DUPLEX,
|
||||
TRIGGER_NETDEV_FULL_DUPLEX,
|
||||
TRIGGER_NETDEV_TX,
|
||||
|
||||
Reference in New Issue
Block a user