Lines Matching refs:trigger_data
65 static void set_baseline_state(struct led_netdev_data *trigger_data) in set_baseline_state() argument
68 struct led_classdev *led_cdev = trigger_data->led_cdev; in set_baseline_state()
76 if (!test_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode)) in set_baseline_state()
79 if (test_bit(NETDEV_LED_LINK, &trigger_data->mode)) in set_baseline_state()
88 if (test_bit(NETDEV_LED_TX, &trigger_data->mode) || in set_baseline_state()
89 test_bit(NETDEV_LED_RX, &trigger_data->mode)) in set_baseline_state()
90 schedule_delayed_work(&trigger_data->work, 0); in set_baseline_state()
97 struct led_netdev_data *trigger_data = led_trigger_get_drvdata(dev); in device_name_show() local
100 spin_lock_bh(&trigger_data->lock); in device_name_show()
101 len = sprintf(buf, "%s\n", trigger_data->device_name); in device_name_show()
102 spin_unlock_bh(&trigger_data->lock); in device_name_show()
111 struct led_netdev_data *trigger_data = led_trigger_get_drvdata(dev); in device_name_store() local
116 cancel_delayed_work_sync(&trigger_data->work); in device_name_store()
118 spin_lock_bh(&trigger_data->lock); in device_name_store()
120 if (trigger_data->net_dev) { in device_name_store()
121 dev_put(trigger_data->net_dev); in device_name_store()
122 trigger_data->net_dev = NULL; in device_name_store()
125 memcpy(trigger_data->device_name, buf, size); in device_name_store()
126 trigger_data->device_name[size] = 0; in device_name_store()
127 if (size > 0 && trigger_data->device_name[size - 1] == '\n') in device_name_store()
128 trigger_data->device_name[size - 1] = 0; in device_name_store()
130 if (trigger_data->device_name[0] != 0) in device_name_store()
131 trigger_data->net_dev = in device_name_store()
132 dev_get_by_name(&init_net, trigger_data->device_name); in device_name_store()
134 clear_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode); in device_name_store()
135 if (trigger_data->net_dev != NULL) in device_name_store()
136 if (netif_carrier_ok(trigger_data->net_dev)) in device_name_store()
137 set_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode); in device_name_store()
139 trigger_data->last_activity = 0; in device_name_store()
141 set_baseline_state(trigger_data); in device_name_store()
142 spin_unlock_bh(&trigger_data->lock); in device_name_store()
152 struct led_netdev_data *trigger_data = led_trigger_get_drvdata(dev); in netdev_led_attr_show() local
169 return sprintf(buf, "%u\n", test_bit(bit, &trigger_data->mode)); in netdev_led_attr_show()
175 struct led_netdev_data *trigger_data = led_trigger_get_drvdata(dev); in netdev_led_attr_store() local
198 cancel_delayed_work_sync(&trigger_data->work); in netdev_led_attr_store()
201 set_bit(bit, &trigger_data->mode); in netdev_led_attr_store()
203 clear_bit(bit, &trigger_data->mode); in netdev_led_attr_store()
205 set_baseline_state(trigger_data); in netdev_led_attr_store()
255 struct led_netdev_data *trigger_data = led_trigger_get_drvdata(dev); in interval_show() local
258 jiffies_to_msecs(atomic_read(&trigger_data->interval))); in interval_show()
265 struct led_netdev_data *trigger_data = led_trigger_get_drvdata(dev); in interval_store() local
275 cancel_delayed_work_sync(&trigger_data->work); in interval_store()
277 atomic_set(&trigger_data->interval, msecs_to_jiffies(value)); in interval_store()
278 set_baseline_state(trigger_data); /* resets timer */ in interval_store()
301 struct led_netdev_data *trigger_data = in netdev_trig_notify() local
308 if (!(dev == trigger_data->net_dev || in netdev_trig_notify()
309 (evt == NETDEV_REGISTER && !strcmp(dev->name, trigger_data->device_name)))) in netdev_trig_notify()
312 cancel_delayed_work_sync(&trigger_data->work); in netdev_trig_notify()
314 spin_lock_bh(&trigger_data->lock); in netdev_trig_notify()
316 clear_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode); in netdev_trig_notify()
319 if (trigger_data->net_dev) in netdev_trig_notify()
320 dev_put(trigger_data->net_dev); in netdev_trig_notify()
322 trigger_data->net_dev = dev; in netdev_trig_notify()
325 dev_put(trigger_data->net_dev); in netdev_trig_notify()
326 trigger_data->net_dev = NULL; in netdev_trig_notify()
331 set_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode); in netdev_trig_notify()
335 set_baseline_state(trigger_data); in netdev_trig_notify()
337 spin_unlock_bh(&trigger_data->lock); in netdev_trig_notify()
345 struct led_netdev_data *trigger_data = in netdev_trig_work() local
354 if (!trigger_data->net_dev) { in netdev_trig_work()
355 led_set_brightness(trigger_data->led_cdev, LED_OFF); in netdev_trig_work()
360 if (!test_bit(NETDEV_LED_TX, &trigger_data->mode) && in netdev_trig_work()
361 !test_bit(NETDEV_LED_RX, &trigger_data->mode)) in netdev_trig_work()
364 dev_stats = dev_get_stats(trigger_data->net_dev, &temp); in netdev_trig_work()
366 (test_bit(NETDEV_LED_TX, &trigger_data->mode) ? in netdev_trig_work()
368 (test_bit(NETDEV_LED_RX, &trigger_data->mode) ? in netdev_trig_work()
371 if (trigger_data->last_activity != new_activity) { in netdev_trig_work()
372 led_stop_software_blink(trigger_data->led_cdev); in netdev_trig_work()
374 invert = test_bit(NETDEV_LED_LINK, &trigger_data->mode); in netdev_trig_work()
376 atomic_read(&trigger_data->interval)); in netdev_trig_work()
378 led_blink_set_oneshot(trigger_data->led_cdev, in netdev_trig_work()
382 trigger_data->last_activity = new_activity; in netdev_trig_work()
385 schedule_delayed_work(&trigger_data->work, in netdev_trig_work()
386 (atomic_read(&trigger_data->interval)*2)); in netdev_trig_work()
391 struct led_netdev_data *trigger_data; in netdev_trig_activate() local
394 trigger_data = kzalloc(sizeof(struct led_netdev_data), GFP_KERNEL); in netdev_trig_activate()
395 if (!trigger_data) in netdev_trig_activate()
398 spin_lock_init(&trigger_data->lock); in netdev_trig_activate()
400 trigger_data->notifier.notifier_call = netdev_trig_notify; in netdev_trig_activate()
401 trigger_data->notifier.priority = 10; in netdev_trig_activate()
403 INIT_DELAYED_WORK(&trigger_data->work, netdev_trig_work); in netdev_trig_activate()
405 trigger_data->led_cdev = led_cdev; in netdev_trig_activate()
406 trigger_data->net_dev = NULL; in netdev_trig_activate()
407 trigger_data->device_name[0] = 0; in netdev_trig_activate()
409 trigger_data->mode = 0; in netdev_trig_activate()
410 atomic_set(&trigger_data->interval, msecs_to_jiffies(50)); in netdev_trig_activate()
411 trigger_data->last_activity = 0; in netdev_trig_activate()
413 led_set_trigger_data(led_cdev, trigger_data); in netdev_trig_activate()
415 rc = register_netdevice_notifier(&trigger_data->notifier); in netdev_trig_activate()
417 kfree(trigger_data); in netdev_trig_activate()
424 struct led_netdev_data *trigger_data = led_get_trigger_data(led_cdev); in netdev_trig_deactivate() local
426 unregister_netdevice_notifier(&trigger_data->notifier); in netdev_trig_deactivate()
428 cancel_delayed_work_sync(&trigger_data->work); in netdev_trig_deactivate()
430 if (trigger_data->net_dev) in netdev_trig_deactivate()
431 dev_put(trigger_data->net_dev); in netdev_trig_deactivate()
433 kfree(trigger_data); in netdev_trig_deactivate()