Lines Matching refs:knet
60 struct kni_net *knet = net_generic(net, kni_net_id); in kni_init_net() local
62 memset(knet, 0, sizeof(*knet)); in kni_init_net()
64 struct kni_net *knet; in kni_init_net()
67 knet = kzalloc(sizeof(struct kni_net), GFP_KERNEL); in kni_init_net()
68 if (!knet) { in kni_init_net()
75 clear_bit(KNI_DEV_IN_USE_BIT_NUM, &knet->device_in_use); in kni_init_net()
77 mutex_init(&knet->kni_kthread_lock); in kni_init_net()
79 init_rwsem(&knet->kni_list_lock); in kni_init_net()
80 INIT_LIST_HEAD(&knet->kni_list_head); in kni_init_net()
85 ret = net_assign_generic(net, kni_net_id, knet); in kni_init_net()
87 kfree(knet); in kni_init_net()
96 struct kni_net *knet __maybe_unused; in kni_exit_net()
98 knet = net_generic(net, kni_net_id); in kni_exit_net()
99 mutex_destroy(&knet->kni_kthread_lock); in kni_exit_net()
102 kfree(knet); in kni_exit_net()
118 struct kni_net *knet = data; in kni_thread_single() local
123 down_read(&knet->kni_list_lock); in kni_thread_single()
125 list_for_each_entry(dev, &knet->kni_list_head, list) { in kni_thread_single()
130 up_read(&knet->kni_list_lock); in kni_thread_single()
165 struct kni_net *knet = net_generic(net, kni_net_id); in kni_open() local
168 if (test_and_set_bit(KNI_DEV_IN_USE_BIT_NUM, &knet->device_in_use)) in kni_open()
197 struct kni_net *knet = net_generic(net, kni_net_id); in kni_release() local
202 mutex_lock(&knet->kni_kthread_lock); in kni_release()
204 if (knet->kni_kthread != NULL) { in kni_release()
205 kthread_stop(knet->kni_kthread); in kni_release()
206 knet->kni_kthread = NULL; in kni_release()
208 mutex_unlock(&knet->kni_kthread_lock); in kni_release()
211 down_write(&knet->kni_list_lock); in kni_release()
212 list_for_each_entry_safe(dev, n, &knet->kni_list_head, list) { in kni_release()
222 up_write(&knet->kni_list_lock); in kni_release()
225 clear_bit(KNI_DEV_IN_USE_BIT_NUM, &knet->device_in_use); in kni_release()
249 kni_run_thread(struct kni_net *knet, struct kni_dev *kni, uint8_t force_bind) in kni_run_thread() argument
267 mutex_lock(&knet->kni_kthread_lock); in kni_run_thread()
269 if (knet->kni_kthread == NULL) { in kni_run_thread()
270 knet->kni_kthread = kthread_create(kni_thread_single, in kni_run_thread()
271 (void *)knet, "kni_single"); in kni_run_thread()
272 if (IS_ERR(knet->kni_kthread)) { in kni_run_thread()
273 mutex_unlock(&knet->kni_kthread_lock); in kni_run_thread()
279 kthread_bind(knet->kni_kthread, kni->core_id); in kni_run_thread()
280 wake_up_process(knet->kni_kthread); in kni_run_thread()
283 mutex_unlock(&knet->kni_kthread_lock); in kni_run_thread()
293 struct kni_net *knet = net_generic(net, kni_net_id); in kni_ioctl_create() local
323 down_read(&knet->kni_list_lock); in kni_ioctl_create()
324 list_for_each_entry_safe(dev, n, &knet->kni_list_head, list) { in kni_ioctl_create()
326 up_read(&knet->kni_list_lock); in kni_ioctl_create()
330 up_read(&knet->kni_list_lock); in kni_ioctl_create()
432 ret = kni_run_thread(knet, kni, dev_info.force_bind); in kni_ioctl_create()
436 down_write(&knet->kni_list_lock); in kni_ioctl_create()
437 list_add(&kni->list, &knet->kni_list_head); in kni_ioctl_create()
438 up_write(&knet->kni_list_lock); in kni_ioctl_create()
447 struct kni_net *knet = net_generic(net, kni_net_id); in kni_ioctl_release() local
462 down_write(&knet->kni_list_lock); in kni_ioctl_release()
463 list_for_each_entry_safe(dev, n, &knet->kni_list_head, list) { in kni_ioctl_release()
477 up_write(&knet->kni_list_lock); in kni_ioctl_release()