static int netdev_trig_activate(struct led_classdev *led_cdev)
 {
        struct led_netdev_data *trigger_data;
+       unsigned long mode;
+       struct device *dev;
        int rc;
 
        trigger_data = kzalloc(sizeof(struct led_netdev_data), GFP_KERNEL);
        atomic_set(&trigger_data->interval, msecs_to_jiffies(NETDEV_LED_DEFAULT_INTERVAL));
        trigger_data->last_activity = 0;
 
+       /* Check if hw control is active by default on the LED.
+        * Init already enabled mode in hw control.
+        */
+       if (supports_hw_control(led_cdev) &&
+           !led_cdev->hw_control_get(led_cdev, &mode)) {
+               dev = led_cdev->hw_control_get_device(led_cdev);
+               if (dev) {
+                       const char *name = dev_name(dev);
+
+                       set_device_name(trigger_data, name, strlen(name));
+                       trigger_data->hw_control = true;
+                       trigger_data->mode = mode;
+               }
+       }
+
        led_set_trigger_data(led_cdev, trigger_data);
 
        rc = register_netdevice_notifier(&trigger_data->notifier);