ledtrig-netdev.c (552c69b36ebd966186573b9c7a286b390935cce1) ledtrig-netdev.c (2282e125a406e09331c5a785e3df29035c99a607)
1// SPDX-License-Identifier: GPL-2.0
2// Copyright 2017 Ben Whitten <ben.whitten@gmail.com>
3// Copyright 2007 Oliver Jowett <oliver@opencloud.com>
4//
5// LED Kernel Netdev Trigger
6//
7// Toggles the LED to reflect the link and traffic state of a named net device
8//

--- 374 unchanged lines hidden (view full) ---

383 invert);
384 trigger_data->last_activity = new_activity;
385 }
386
387 schedule_delayed_work(&trigger_data->work,
388 (atomic_read(&trigger_data->interval)*2));
389}
390
1// SPDX-License-Identifier: GPL-2.0
2// Copyright 2017 Ben Whitten <ben.whitten@gmail.com>
3// Copyright 2007 Oliver Jowett <oliver@opencloud.com>
4//
5// LED Kernel Netdev Trigger
6//
7// Toggles the LED to reflect the link and traffic state of a named net device
8//

--- 374 unchanged lines hidden (view full) ---

383 invert);
384 trigger_data->last_activity = new_activity;
385 }
386
387 schedule_delayed_work(&trigger_data->work,
388 (atomic_read(&trigger_data->interval)*2));
389}
390
391static void netdev_trig_activate(struct led_classdev *led_cdev)
391static int netdev_trig_activate(struct led_classdev *led_cdev)
392{
393 struct led_netdev_data *trigger_data;
394 int rc;
395
396 trigger_data = kzalloc(sizeof(struct led_netdev_data), GFP_KERNEL);
397 if (!trigger_data)
392{
393 struct led_netdev_data *trigger_data;
394 int rc;
395
396 trigger_data = kzalloc(sizeof(struct led_netdev_data), GFP_KERNEL);
397 if (!trigger_data)
398 return;
398 return 0;
399
400 spin_lock_init(&trigger_data->lock);
401
402 trigger_data->notifier.notifier_call = netdev_trig_notify;
403 trigger_data->notifier.priority = 10;
404
405 INIT_DELAYED_WORK(&trigger_data->work, netdev_trig_work);
406

--- 20 unchanged lines hidden (view full) ---

427 if (rc)
428 goto err_out_rx;
429 rc = device_create_file(led_cdev->dev, &dev_attr_interval);
430 if (rc)
431 goto err_out_tx;
432 rc = register_netdevice_notifier(&trigger_data->notifier);
433 if (rc)
434 goto err_out_interval;
399
400 spin_lock_init(&trigger_data->lock);
401
402 trigger_data->notifier.notifier_call = netdev_trig_notify;
403 trigger_data->notifier.priority = 10;
404
405 INIT_DELAYED_WORK(&trigger_data->work, netdev_trig_work);
406

--- 20 unchanged lines hidden (view full) ---

427 if (rc)
428 goto err_out_rx;
429 rc = device_create_file(led_cdev->dev, &dev_attr_interval);
430 if (rc)
431 goto err_out_tx;
432 rc = register_netdevice_notifier(&trigger_data->notifier);
433 if (rc)
434 goto err_out_interval;
435 return;
435 return 0;
436
437err_out_interval:
438 device_remove_file(led_cdev->dev, &dev_attr_interval);
439err_out_tx:
440 device_remove_file(led_cdev->dev, &dev_attr_tx);
441err_out_rx:
442 device_remove_file(led_cdev->dev, &dev_attr_rx);
443err_out_link:
444 device_remove_file(led_cdev->dev, &dev_attr_link);
445err_out_device_name:
446 device_remove_file(led_cdev->dev, &dev_attr_device_name);
447err_out:
448 led_cdev->trigger_data = NULL;
449 kfree(trigger_data);
436
437err_out_interval:
438 device_remove_file(led_cdev->dev, &dev_attr_interval);
439err_out_tx:
440 device_remove_file(led_cdev->dev, &dev_attr_tx);
441err_out_rx:
442 device_remove_file(led_cdev->dev, &dev_attr_rx);
443err_out_link:
444 device_remove_file(led_cdev->dev, &dev_attr_link);
445err_out_device_name:
446 device_remove_file(led_cdev->dev, &dev_attr_device_name);
447err_out:
448 led_cdev->trigger_data = NULL;
449 kfree(trigger_data);
450
451 return 0;
450}
451
452static void netdev_trig_deactivate(struct led_classdev *led_cdev)
453{
454 struct led_netdev_data *trigger_data = led_cdev->trigger_data;
455
456 if (trigger_data) {
457 unregister_netdevice_notifier(&trigger_data->notifier);

--- 39 unchanged lines hidden ---
452}
453
454static void netdev_trig_deactivate(struct led_classdev *led_cdev)
455{
456 struct led_netdev_data *trigger_data = led_cdev->trigger_data;
457
458 if (trigger_data) {
459 unregister_netdevice_notifier(&trigger_data->notifier);

--- 39 unchanged lines hidden ---