Lines Matching full:iface
227 struct interface *iface = (struct interface *)p; in ksmbd_kthread_fn() local
231 mutex_lock(&iface->sock_release_lock); in ksmbd_kthread_fn()
232 if (!iface->ksmbd_socket) { in ksmbd_kthread_fn()
233 mutex_unlock(&iface->sock_release_lock); in ksmbd_kthread_fn()
236 ret = kernel_accept(iface->ksmbd_socket, &client_sk, in ksmbd_kthread_fn()
238 mutex_unlock(&iface->sock_release_lock); in ksmbd_kthread_fn()
268 * @iface: pointer to struct interface
276 static int ksmbd_tcp_run_kthread(struct interface *iface) in ksmbd_tcp_run_kthread() argument
281 kthread = kthread_run(ksmbd_kthread_fn, (void *)iface, "ksmbd-%s", in ksmbd_tcp_run_kthread()
282 iface->name); in ksmbd_tcp_run_kthread()
287 iface->ksmbd_kthread = kthread; in ksmbd_tcp_run_kthread()
421 static int create_socket(struct interface *iface) in create_socket() argument
456 KERNEL_SOCKPTR(iface->name), in create_socket()
457 strlen(iface->name)); in create_socket()
483 iface->ksmbd_socket = ksmbd_socket; in create_socket()
484 ret = ksmbd_tcp_run_kthread(iface); in create_socket()
489 iface->state = IFACE_STATE_CONFIGURED; in create_socket()
496 iface->ksmbd_socket = NULL; in create_socket()
504 struct interface *iface; in ksmbd_netdev_event() local
512 list_for_each_entry(iface, &iface_list, entry) { in ksmbd_netdev_event()
513 if (!strcmp(iface->name, netdev->name)) { in ksmbd_netdev_event()
515 if (iface->state != IFACE_STATE_DOWN) in ksmbd_netdev_event()
517 ret = create_socket(iface); in ksmbd_netdev_event()
524 iface = alloc_iface(kstrdup(netdev->name, GFP_KERNEL)); in ksmbd_netdev_event()
525 if (!iface) in ksmbd_netdev_event()
527 ret = create_socket(iface); in ksmbd_netdev_event()
533 list_for_each_entry(iface, &iface_list, entry) { in ksmbd_netdev_event()
534 if (!strcmp(iface->name, netdev->name) && in ksmbd_netdev_event()
535 iface->state == IFACE_STATE_CONFIGURED) { in ksmbd_netdev_event()
536 tcp_stop_kthread(iface->ksmbd_kthread); in ksmbd_netdev_event()
537 iface->ksmbd_kthread = NULL; in ksmbd_netdev_event()
538 mutex_lock(&iface->sock_release_lock); in ksmbd_netdev_event()
539 tcp_destroy_socket(iface->ksmbd_socket); in ksmbd_netdev_event()
540 iface->ksmbd_socket = NULL; in ksmbd_netdev_event()
541 mutex_unlock(&iface->sock_release_lock); in ksmbd_netdev_event()
543 iface->state = IFACE_STATE_DOWN; in ksmbd_netdev_event()
578 struct interface *iface, *tmp; in ksmbd_tcp_destroy() local
582 list_for_each_entry_safe(iface, tmp, &iface_list, entry) { in ksmbd_tcp_destroy()
583 list_del(&iface->entry); in ksmbd_tcp_destroy()
584 kfree(iface->name); in ksmbd_tcp_destroy()
585 kfree(iface); in ksmbd_tcp_destroy()
591 struct interface *iface; in alloc_iface() local
596 iface = kzalloc(sizeof(struct interface), GFP_KERNEL); in alloc_iface()
597 if (!iface) { in alloc_iface()
602 iface->name = ifname; in alloc_iface()
603 iface->state = IFACE_STATE_DOWN; in alloc_iface()
604 list_add(&iface->entry, &iface_list); in alloc_iface()
605 mutex_init(&iface->sock_release_lock); in alloc_iface()
606 return iface; in alloc_iface()