Lines Matching refs:hwstats

10 nsim_dev_hwstats_get_list_head(struct nsim_dev_hwstats *hwstats,  in nsim_dev_hwstats_get_list_head()  argument
15 return &hwstats->l3_list; in nsim_dev_hwstats_get_list_head()
22 static void nsim_dev_hwstats_traffic_bump(struct nsim_dev_hwstats *hwstats, in nsim_dev_hwstats_traffic_bump() argument
28 hwsdev_list = nsim_dev_hwstats_get_list_head(hwstats, type); in nsim_dev_hwstats_traffic_bump()
44 struct nsim_dev_hwstats *hwstats; in nsim_dev_hwstats_traffic_work() local
46 hwstats = container_of(work, struct nsim_dev_hwstats, traffic_dw.work); in nsim_dev_hwstats_traffic_work()
47 mutex_lock(&hwstats->hwsdev_list_lock); in nsim_dev_hwstats_traffic_work()
48 nsim_dev_hwstats_traffic_bump(hwstats, NETDEV_OFFLOAD_XSTATS_TYPE_L3); in nsim_dev_hwstats_traffic_work()
49 mutex_unlock(&hwstats->hwsdev_list_lock); in nsim_dev_hwstats_traffic_work()
51 schedule_delayed_work(&hwstats->traffic_dw, in nsim_dev_hwstats_traffic_work()
105 static int nsim_dev_hwstats_event_off_xstats(struct nsim_dev_hwstats *hwstats, in nsim_dev_hwstats_event_off_xstats() argument
115 hwsdev_list = nsim_dev_hwstats_get_list_head(hwstats, info->type); in nsim_dev_hwstats_event_off_xstats()
119 mutex_lock(&hwstats->hwsdev_list_lock); in nsim_dev_hwstats_event_off_xstats()
141 mutex_unlock(&hwstats->hwsdev_list_lock); in nsim_dev_hwstats_event_off_xstats()
152 __nsim_dev_hwstats_event_unregister(struct nsim_dev_hwstats *hwstats, in __nsim_dev_hwstats_event_unregister() argument
159 hwsdev_list = nsim_dev_hwstats_get_list_head(hwstats, type); in __nsim_dev_hwstats_event_unregister()
171 static void nsim_dev_hwstats_event_unregister(struct nsim_dev_hwstats *hwstats, in nsim_dev_hwstats_event_unregister() argument
174 mutex_lock(&hwstats->hwsdev_list_lock); in nsim_dev_hwstats_event_unregister()
175 __nsim_dev_hwstats_event_unregister(hwstats, dev, in nsim_dev_hwstats_event_unregister()
177 mutex_unlock(&hwstats->hwsdev_list_lock); in nsim_dev_hwstats_event_unregister()
180 static int nsim_dev_hwstats_event(struct nsim_dev_hwstats *hwstats, in nsim_dev_hwstats_event() argument
189 return nsim_dev_hwstats_event_off_xstats(hwstats, dev, in nsim_dev_hwstats_event()
192 nsim_dev_hwstats_event_unregister(hwstats, dev); in nsim_dev_hwstats_event()
203 struct nsim_dev_hwstats *hwstats; in nsim_dev_netdevice_event() local
206 hwstats = container_of(nb, struct nsim_dev_hwstats, netdevice_nb); in nsim_dev_netdevice_event()
207 err = nsim_dev_hwstats_event(hwstats, dev, event, ptr); in nsim_dev_netdevice_event()
215 nsim_dev_hwstats_enable_ifindex(struct nsim_dev_hwstats *hwstats, in nsim_dev_hwstats_enable_ifindex() argument
226 nsim_dev = container_of(hwstats, struct nsim_dev, hwstats); in nsim_dev_hwstats_enable_ifindex()
230 mutex_lock(&hwstats->hwsdev_list_lock); in nsim_dev_hwstats_enable_ifindex()
249 mutex_unlock(&hwstats->hwsdev_list_lock); in nsim_dev_hwstats_enable_ifindex()
262 mutex_unlock(&hwstats->hwsdev_list_lock); in nsim_dev_hwstats_enable_ifindex()
268 nsim_dev_hwstats_disable_ifindex(struct nsim_dev_hwstats *hwstats, in nsim_dev_hwstats_disable_ifindex() argument
277 mutex_lock(&hwstats->hwsdev_list_lock); in nsim_dev_hwstats_disable_ifindex()
281 mutex_unlock(&hwstats->hwsdev_list_lock); in nsim_dev_hwstats_disable_ifindex()
301 nsim_dev_hwstats_fail_ifindex(struct nsim_dev_hwstats *hwstats, in nsim_dev_hwstats_fail_ifindex() argument
309 mutex_lock(&hwstats->hwsdev_list_lock); in nsim_dev_hwstats_fail_ifindex()
320 mutex_unlock(&hwstats->hwsdev_list_lock); in nsim_dev_hwstats_fail_ifindex()
340 struct nsim_dev_hwstats *hwstats = file->private_data; in nsim_dev_hwstats_do_write() local
352 hwsdev_list = nsim_dev_hwstats_get_list_head(hwstats, hwsfops->type); in nsim_dev_hwstats_do_write()
358 err = nsim_dev_hwstats_disable_ifindex(hwstats, ifindex, in nsim_dev_hwstats_do_write()
363 err = nsim_dev_hwstats_enable_ifindex(hwstats, ifindex, in nsim_dev_hwstats_do_write()
368 err = nsim_dev_hwstats_fail_ifindex(hwstats, ifindex, in nsim_dev_hwstats_do_write()
406 struct nsim_dev_hwstats *hwstats = &nsim_dev->hwstats; in nsim_dev_hwstats_init() local
410 mutex_init(&hwstats->hwsdev_list_lock); in nsim_dev_hwstats_init()
411 INIT_LIST_HEAD(&hwstats->l3_list); in nsim_dev_hwstats_init()
413 hwstats->netdevice_nb.notifier_call = nsim_dev_netdevice_event; in nsim_dev_hwstats_init()
414 err = register_netdevice_notifier_net(net, &hwstats->netdevice_nb); in nsim_dev_hwstats_init()
418 hwstats->ddir = debugfs_create_dir("hwstats", nsim_dev->ddir); in nsim_dev_hwstats_init()
419 if (IS_ERR(hwstats->ddir)) { in nsim_dev_hwstats_init()
420 err = PTR_ERR(hwstats->ddir); in nsim_dev_hwstats_init()
424 hwstats->l3_ddir = debugfs_create_dir("l3", hwstats->ddir); in nsim_dev_hwstats_init()
425 if (IS_ERR(hwstats->l3_ddir)) { in nsim_dev_hwstats_init()
426 err = PTR_ERR(hwstats->l3_ddir); in nsim_dev_hwstats_init()
430 debugfs_create_file_aux("enable_ifindex", 0200, hwstats->l3_ddir, hwstats, in nsim_dev_hwstats_init()
432 debugfs_create_file_aux("disable_ifindex", 0200, hwstats->l3_ddir, hwstats, in nsim_dev_hwstats_init()
434 debugfs_create_file_aux("fail_next_enable", 0200, hwstats->l3_ddir, hwstats, in nsim_dev_hwstats_init()
437 INIT_DELAYED_WORK(&hwstats->traffic_dw, in nsim_dev_hwstats_init()
439 schedule_delayed_work(&hwstats->traffic_dw, in nsim_dev_hwstats_init()
444 debugfs_remove_recursive(hwstats->ddir); in nsim_dev_hwstats_init()
446 unregister_netdevice_notifier_net(net, &hwstats->netdevice_nb); in nsim_dev_hwstats_init()
448 mutex_destroy(&hwstats->hwsdev_list_lock); in nsim_dev_hwstats_init()
452 static void nsim_dev_hwsdev_list_wipe(struct nsim_dev_hwstats *hwstats, in nsim_dev_hwsdev_list_wipe() argument
458 hwsdev_list = nsim_dev_hwstats_get_list_head(hwstats, type); in nsim_dev_hwsdev_list_wipe()
462 mutex_lock(&hwstats->hwsdev_list_lock); in nsim_dev_hwsdev_list_wipe()
467 mutex_unlock(&hwstats->hwsdev_list_lock); in nsim_dev_hwsdev_list_wipe()
472 struct nsim_dev_hwstats *hwstats = &nsim_dev->hwstats; in nsim_dev_hwstats_exit() local
475 cancel_delayed_work_sync(&hwstats->traffic_dw); in nsim_dev_hwstats_exit()
476 debugfs_remove_recursive(hwstats->ddir); in nsim_dev_hwstats_exit()
477 unregister_netdevice_notifier_net(net, &hwstats->netdevice_nb); in nsim_dev_hwstats_exit()
478 nsim_dev_hwsdev_list_wipe(hwstats, NETDEV_OFFLOAD_XSTATS_TYPE_L3); in nsim_dev_hwstats_exit()
479 mutex_destroy(&hwstats->hwsdev_list_lock); in nsim_dev_hwstats_exit()