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
309 if (!(dev == trigger_data->net_dev || in netdev_trig_notify()
310 (evt == NETDEV_CHANGENAME && !strcmp(dev->name, trigger_data->device_name)) || in netdev_trig_notify()
311 (evt == NETDEV_REGISTER && !strcmp(dev->name, trigger_data->device_name)))) in netdev_trig_notify()
314 cancel_delayed_work_sync(&trigger_data->work); in netdev_trig_notify()
316 spin_lock_bh(&trigger_data->lock); in netdev_trig_notify()
318 clear_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode); in netdev_trig_notify()
322 if (trigger_data->net_dev) in netdev_trig_notify()
323 dev_put(trigger_data->net_dev); in netdev_trig_notify()
325 trigger_data->net_dev = dev; in netdev_trig_notify()
328 dev_put(trigger_data->net_dev); in netdev_trig_notify()
329 trigger_data->net_dev = NULL; in netdev_trig_notify()
334 set_bit(NETDEV_LED_MODE_LINKUP, &trigger_data->mode); in netdev_trig_notify()
338 set_baseline_state(trigger_data); in netdev_trig_notify()
340 spin_unlock_bh(&trigger_data->lock); in netdev_trig_notify()
348 struct led_netdev_data *trigger_data = in netdev_trig_work() local
357 if (!trigger_data->net_dev) { in netdev_trig_work()
358 led_set_brightness(trigger_data->led_cdev, LED_OFF); in netdev_trig_work()
363 if (!test_bit(NETDEV_LED_TX, &trigger_data->mode) && in netdev_trig_work()
364 !test_bit(NETDEV_LED_RX, &trigger_data->mode)) in netdev_trig_work()
367 dev_stats = dev_get_stats(trigger_data->net_dev, &temp); in netdev_trig_work()
369 (test_bit(NETDEV_LED_TX, &trigger_data->mode) ? in netdev_trig_work()
371 (test_bit(NETDEV_LED_RX, &trigger_data->mode) ? in netdev_trig_work()
374 if (trigger_data->last_activity != new_activity) { in netdev_trig_work()
375 led_stop_software_blink(trigger_data->led_cdev); in netdev_trig_work()
377 invert = test_bit(NETDEV_LED_LINK, &trigger_data->mode); in netdev_trig_work()
379 atomic_read(&trigger_data->interval)); in netdev_trig_work()
381 led_blink_set_oneshot(trigger_data->led_cdev, in netdev_trig_work()
385 trigger_data->last_activity = new_activity; in netdev_trig_work()
388 schedule_delayed_work(&trigger_data->work, in netdev_trig_work()
389 (atomic_read(&trigger_data->interval)*2)); in netdev_trig_work()
394 struct led_netdev_data *trigger_data; in netdev_trig_activate() local
397 trigger_data = kzalloc(sizeof(struct led_netdev_data), GFP_KERNEL); in netdev_trig_activate()
398 if (!trigger_data) in netdev_trig_activate()
401 spin_lock_init(&trigger_data->lock); in netdev_trig_activate()
403 trigger_data->notifier.notifier_call = netdev_trig_notify; in netdev_trig_activate()
404 trigger_data->notifier.priority = 10; in netdev_trig_activate()
406 INIT_DELAYED_WORK(&trigger_data->work, netdev_trig_work); in netdev_trig_activate()
408 trigger_data->led_cdev = led_cdev; in netdev_trig_activate()
409 trigger_data->net_dev = NULL; in netdev_trig_activate()
410 trigger_data->device_name[0] = 0; in netdev_trig_activate()
412 trigger_data->mode = 0; in netdev_trig_activate()
413 atomic_set(&trigger_data->interval, msecs_to_jiffies(50)); in netdev_trig_activate()
414 trigger_data->last_activity = 0; in netdev_trig_activate()
416 led_set_trigger_data(led_cdev, trigger_data); in netdev_trig_activate()
418 rc = register_netdevice_notifier(&trigger_data->notifier); in netdev_trig_activate()
420 kfree(trigger_data); in netdev_trig_activate()
427 struct led_netdev_data *trigger_data = led_get_trigger_data(led_cdev); in netdev_trig_deactivate() local
429 unregister_netdevice_notifier(&trigger_data->notifier); in netdev_trig_deactivate()
431 cancel_delayed_work_sync(&trigger_data->work); in netdev_trig_deactivate()
433 if (trigger_data->net_dev) in netdev_trig_deactivate()
434 dev_put(trigger_data->net_dev); in netdev_trig_deactivate()
436 kfree(trigger_data); in netdev_trig_deactivate()