Lines Matching defs:hwstats
10 nsim_dev_hwstats_get_list_head(struct nsim_dev_hwstats *hwstats,
15 return &hwstats->l3_list;
22 static void nsim_dev_hwstats_traffic_bump(struct nsim_dev_hwstats *hwstats,
28 hwsdev_list = nsim_dev_hwstats_get_list_head(hwstats, type);
44 struct nsim_dev_hwstats *hwstats;
46 hwstats = container_of(work, struct nsim_dev_hwstats, traffic_dw.work);
47 mutex_lock(&hwstats->hwsdev_list_lock);
48 nsim_dev_hwstats_traffic_bump(hwstats, NETDEV_OFFLOAD_XSTATS_TYPE_L3);
49 mutex_unlock(&hwstats->hwsdev_list_lock);
51 schedule_delayed_work(&hwstats->traffic_dw,
105 static int nsim_dev_hwstats_event_off_xstats(struct nsim_dev_hwstats *hwstats,
115 hwsdev_list = nsim_dev_hwstats_get_list_head(hwstats, info->type);
119 mutex_lock(&hwstats->hwsdev_list_lock);
141 mutex_unlock(&hwstats->hwsdev_list_lock);
152 __nsim_dev_hwstats_event_unregister(struct nsim_dev_hwstats *hwstats,
159 hwsdev_list = nsim_dev_hwstats_get_list_head(hwstats, type);
171 static void nsim_dev_hwstats_event_unregister(struct nsim_dev_hwstats *hwstats,
174 mutex_lock(&hwstats->hwsdev_list_lock);
175 __nsim_dev_hwstats_event_unregister(hwstats, dev,
177 mutex_unlock(&hwstats->hwsdev_list_lock);
180 static int nsim_dev_hwstats_event(struct nsim_dev_hwstats *hwstats,
189 return nsim_dev_hwstats_event_off_xstats(hwstats, dev,
192 nsim_dev_hwstats_event_unregister(hwstats, dev);
203 struct nsim_dev_hwstats *hwstats;
206 hwstats = container_of(nb, struct nsim_dev_hwstats, netdevice_nb);
207 err = nsim_dev_hwstats_event(hwstats, dev, event, ptr);
215 nsim_dev_hwstats_enable_ifindex(struct nsim_dev_hwstats *hwstats,
227 nsim_dev = container_of(hwstats, struct nsim_dev, hwstats);
231 mutex_lock(&hwstats->hwsdev_list_lock);
250 mutex_unlock(&hwstats->hwsdev_list_lock);
265 mutex_unlock(&hwstats->hwsdev_list_lock);
271 nsim_dev_hwstats_disable_ifindex(struct nsim_dev_hwstats *hwstats,
280 mutex_lock(&hwstats->hwsdev_list_lock);
284 mutex_unlock(&hwstats->hwsdev_list_lock);
304 nsim_dev_hwstats_fail_ifindex(struct nsim_dev_hwstats *hwstats,
312 mutex_lock(&hwstats->hwsdev_list_lock);
323 mutex_unlock(&hwstats->hwsdev_list_lock);
344 struct nsim_dev_hwstats *hwstats = file->private_data;
357 hwsdev_list = nsim_dev_hwstats_get_list_head(hwstats, hwsfops->type);
363 err = nsim_dev_hwstats_disable_ifindex(hwstats, ifindex,
368 err = nsim_dev_hwstats_enable_ifindex(hwstats, ifindex,
373 err = nsim_dev_hwstats_fail_ifindex(hwstats, ifindex,
412 struct nsim_dev_hwstats *hwstats = &nsim_dev->hwstats;
416 mutex_init(&hwstats->hwsdev_list_lock);
417 INIT_LIST_HEAD(&hwstats->l3_list);
419 hwstats->netdevice_nb.notifier_call = nsim_dev_netdevice_event;
420 err = register_netdevice_notifier_net(net, &hwstats->netdevice_nb);
424 hwstats->ddir = debugfs_create_dir("hwstats", nsim_dev->ddir);
425 if (IS_ERR(hwstats->ddir)) {
426 err = PTR_ERR(hwstats->ddir);
430 hwstats->l3_ddir = debugfs_create_dir("l3", hwstats->ddir);
431 if (IS_ERR(hwstats->l3_ddir)) {
432 err = PTR_ERR(hwstats->l3_ddir);
436 debugfs_create_file("enable_ifindex", 0200, hwstats->l3_ddir, hwstats,
438 debugfs_create_file("disable_ifindex", 0200, hwstats->l3_ddir, hwstats,
440 debugfs_create_file("fail_next_enable", 0200, hwstats->l3_ddir, hwstats,
443 INIT_DELAYED_WORK(&hwstats->traffic_dw,
445 schedule_delayed_work(&hwstats->traffic_dw,
450 debugfs_remove_recursive(hwstats->ddir);
452 unregister_netdevice_notifier_net(net, &hwstats->netdevice_nb);
454 mutex_destroy(&hwstats->hwsdev_list_lock);
458 static void nsim_dev_hwsdev_list_wipe(struct nsim_dev_hwstats *hwstats,
464 hwsdev_list = nsim_dev_hwstats_get_list_head(hwstats, type);
468 mutex_lock(&hwstats->hwsdev_list_lock);
473 mutex_unlock(&hwstats->hwsdev_list_lock);
478 struct nsim_dev_hwstats *hwstats = &nsim_dev->hwstats;
481 cancel_delayed_work_sync(&hwstats->traffic_dw);
482 debugfs_remove_recursive(hwstats->ddir);
483 unregister_netdevice_notifier_net(net, &hwstats->netdevice_nb);
484 nsim_dev_hwsdev_list_wipe(hwstats, NETDEV_OFFLOAD_XSTATS_TYPE_L3);
485 mutex_destroy(&hwstats->hwsdev_list_lock);