On 03/13/2015 04:16 PM, yegorslists@googlemail.com wrote: > From: Yegor Yefremov > > Add -rxtx trigger, that will be activated both for tx > as rx events. This trigger mimics "activity" LED for Ethernet > devices. > > Signed-off-by: Yegor Yefremov > --- > drivers/net/can/led.c | 14 ++++++++++++-- > include/linux/can/dev.h | 2 ++ > include/linux/can/led.h | 2 +- > 3 files changed, 15 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/can/led.c b/drivers/net/can/led.c > index ab7f1b0..56d940a 100644 > --- a/drivers/net/can/led.c > +++ b/drivers/net/can/led.c > @@ -36,14 +36,20 @@ void can_led_event(struct net_device *netdev, enum can_led_event event) > led_trigger_event(priv->rx_led_trig, LED_OFF); > break; > case CAN_LED_EVENT_TX: > - if (led_delay) > + if (led_delay) { > led_trigger_blink_oneshot(priv->tx_led_trig, > &led_delay, &led_delay, 1); > + led_trigger_blink_oneshot(priv->rxtx_led_trig, > + &led_delay, &led_delay, 1); > + } > break; > case CAN_LED_EVENT_RX: > - if (led_delay) > + if (led_delay) { > led_trigger_blink_oneshot(priv->rx_led_trig, > &led_delay, &led_delay, 1); > + led_trigger_blink_oneshot(priv->rxtx_led_trig, > + &led_delay, &led_delay, 1); > + } > break; > } > } > @@ -76,11 +82,15 @@ void devm_can_led_init(struct net_device *netdev) > "%s-tx", netdev->name); > snprintf(priv->rx_led_trig_name, sizeof(priv->rx_led_trig_name), > "%s-rx", netdev->name); > + snprintf(priv->rxtx_led_trig_name, sizeof(priv->rxtx_led_trig_name), > + "%s-rxtx", netdev->name); > > led_trigger_register_simple(priv->tx_led_trig_name, > &priv->tx_led_trig); > led_trigger_register_simple(priv->rx_led_trig_name, > &priv->rx_led_trig); > + led_trigger_register_simple(priv->rxtx_led_trig_name, > + &priv->rxtx_led_trig); > > devres_add(&netdev->dev, res); > } > diff --git a/include/linux/can/dev.h b/include/linux/can/dev.h > index c05ff0f..c3a9c8f 100644 > --- a/include/linux/can/dev.h > +++ b/include/linux/can/dev.h > @@ -61,6 +61,8 @@ struct can_priv { > char tx_led_trig_name[CAN_LED_NAME_SZ]; > struct led_trigger *rx_led_trig; > char rx_led_trig_name[CAN_LED_NAME_SZ]; > + struct led_trigger *rxtx_led_trig; > + char rxtx_led_trig_name[CAN_LED_NAME_SZ]; > #endif > }; > > diff --git a/include/linux/can/led.h b/include/linux/can/led.h > index e0475c5..c60f542 100644 > --- a/include/linux/can/led.h > +++ b/include/linux/can/led.h > @@ -22,7 +22,7 @@ enum can_led_event { > #ifdef CONFIG_CAN_LEDS > > /* keep space for interface name + "-tx"/"-rx" suffix and null terminator */ ^^^^^^^^^^^ Nitpick: can you update the comment. > -#define CAN_LED_NAME_SZ (IFNAMSIZ + 4) > +#define CAN_LED_NAME_SZ (IFNAMSIZ + 6) > > void can_led_event(struct net_device *netdev, enum can_led_event event); > void devm_can_led_init(struct net_device *netdev); > Marc -- Pengutronix e.K. | Marc Kleine-Budde | Industrial Linux Solutions | Phone: +49-231-2826-924 | Vertretung West/Dortmund | Fax: +49-5121-206917-5555 | Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |