@@ -30,20 +30,28 @@ void can_led_event(struct net_device *netdev, enum can_led_event event)
3030 case CAN_LED_EVENT_OPEN :
3131 led_trigger_event (priv -> tx_led_trig , LED_FULL );
3232 led_trigger_event (priv -> rx_led_trig , LED_FULL );
33+ led_trigger_event (priv -> rxtx_led_trig , LED_FULL );
3334 break ;
3435 case CAN_LED_EVENT_STOP :
3536 led_trigger_event (priv -> tx_led_trig , LED_OFF );
3637 led_trigger_event (priv -> rx_led_trig , LED_OFF );
38+ led_trigger_event (priv -> rxtx_led_trig , LED_OFF );
3739 break ;
3840 case CAN_LED_EVENT_TX :
39- if (led_delay )
41+ if (led_delay ) {
4042 led_trigger_blink_oneshot (priv -> tx_led_trig ,
4143 & led_delay , & led_delay , 1 );
44+ led_trigger_blink_oneshot (priv -> rxtx_led_trig ,
45+ & led_delay , & led_delay , 1 );
46+ }
4247 break ;
4348 case CAN_LED_EVENT_RX :
44- if (led_delay )
49+ if (led_delay ) {
4550 led_trigger_blink_oneshot (priv -> rx_led_trig ,
4651 & led_delay , & led_delay , 1 );
52+ led_trigger_blink_oneshot (priv -> rxtx_led_trig ,
53+ & led_delay , & led_delay , 1 );
54+ }
4755 break ;
4856 }
4957}
@@ -55,6 +63,7 @@ static void can_led_release(struct device *gendev, void *res)
5563
5664 led_trigger_unregister_simple (priv -> tx_led_trig );
5765 led_trigger_unregister_simple (priv -> rx_led_trig );
66+ led_trigger_unregister_simple (priv -> rxtx_led_trig );
5867}
5968
6069/* Register CAN LED triggers for a CAN device
@@ -76,11 +85,15 @@ void devm_can_led_init(struct net_device *netdev)
7685 "%s-tx" , netdev -> name );
7786 snprintf (priv -> rx_led_trig_name , sizeof (priv -> rx_led_trig_name ),
7887 "%s-rx" , netdev -> name );
88+ snprintf (priv -> rxtx_led_trig_name , sizeof (priv -> rxtx_led_trig_name ),
89+ "%s-rxtx" , netdev -> name );
7990
8091 led_trigger_register_simple (priv -> tx_led_trig_name ,
8192 & priv -> tx_led_trig );
8293 led_trigger_register_simple (priv -> rx_led_trig_name ,
8394 & priv -> rx_led_trig );
95+ led_trigger_register_simple (priv -> rxtx_led_trig_name ,
96+ & priv -> rxtx_led_trig );
8497
8598 devres_add (& netdev -> dev , res );
8699}
@@ -97,7 +110,7 @@ static int can_led_notifier(struct notifier_block *nb, unsigned long msg,
97110 if (!priv )
98111 return NOTIFY_DONE ;
99112
100- if (!priv -> tx_led_trig || !priv -> rx_led_trig )
113+ if (!priv -> tx_led_trig || !priv -> rx_led_trig || ! priv -> rxtx_led_trig )
101114 return NOTIFY_DONE ;
102115
103116 if (msg == NETDEV_CHANGENAME ) {
@@ -106,6 +119,9 @@ static int can_led_notifier(struct notifier_block *nb, unsigned long msg,
106119
107120 snprintf (name , sizeof (name ), "%s-rx" , netdev -> name );
108121 led_trigger_rename_static (name , priv -> rx_led_trig );
122+
123+ snprintf (name , sizeof (name ), "%s-rxtx" , netdev -> name );
124+ led_trigger_rename_static (name , priv -> rxtx_led_trig );
109125 }
110126
111127 return NOTIFY_DONE ;
0 commit comments