Re: [RFC PATCH 4/6] leds: trigger: add offload-phy-activity trigger
From: Marek Behún <kabel@kernel.org>
Date: 2021-11-07 22:10:22
Also in:
linux-devicetree, linux-leds, lkml, netdev
On Sun, 7 Nov 2021 18:57:16 +0100 Ansuel Smith [off-list ref] wrote:
Add Offload Trigger for PHY Activity. This special trigger is used to
configure and expose the different HW trigger that are provided by the
PHY. Each offload trigger can be configured by sysfs and on trigger
activation the offload mode is enabled.
This currently implement these hw triggers:
- blink_tx: Blink LED on tx packet receive
- blink_rx: Blink LED on rx packet receive
- blink_collision: Blink LED on collision detection
- link_10m: Keep LED on with 10m link speed
- link_100m: Keep LED on with 100m link speed
- link_1000m: Keep LED on with 1000m link speed
- half_duplex: Keep LED on with half duplex link
- full_duplex: Keep LED on with full duplex link
- linkup_over: Keep LED on with link speed and blink on rx/tx traffic
- power_on_reset: Keep LED on with switch reset
- blink_2hz: Set blink speed at 2hz for every blink event
- blink_4hz: Set blink speed at 4hz for every blink event
- blink_8hz: Set blink speed at 8hz for every blink event
- blink_auto: Set blink speed at 2hz for 10m link speed,
4hz for 100m and 8hz for 1000m
The trigger will read the supported offload trigger in the led cdev and
will expose the offload triggers in sysfs and then activate the offload
mode for the led in offload mode has it configured by default. A flag is
passed to configure_offload with the related rule from this trigger to
active or disable.
It's in the led driver interest the detection and knowing how to
elaborate the passed flags.
The different hw triggers are exposed in the led sysfs dir under the
offload-phy-activity subdir.NAK. The current plan is to use netdev trigger, and if it can transparently offload the settings to HW, it will. Yes, netdev trigger currently does not support all these settings. But it supports indicating link and blinking on activity. So the plan is to start with offloading the blinking on activity, i.e. I the user does $ cd /sys/class/leds/<LED> $ echo netdev >trigger $ echo 1 >rx $ echo eth0 >device_name this would, instead of doing blinking in software, do it in HW instead. After this is implemented, we can start working on extending netdev trigger to support more complicated features. Marek