Lines Matching refs:iface

238 	struct interface *iface = (struct interface *)p;  in ksmbd_kthread_fn()  local
243 mutex_lock(&iface->sock_release_lock); in ksmbd_kthread_fn()
244 if (!iface->ksmbd_socket) { in ksmbd_kthread_fn()
245 mutex_unlock(&iface->sock_release_lock); in ksmbd_kthread_fn()
248 ret = kernel_accept(iface->ksmbd_socket, &client_sk, in ksmbd_kthread_fn()
250 mutex_unlock(&iface->sock_release_lock); in ksmbd_kthread_fn()
316 static int ksmbd_tcp_run_kthread(struct interface *iface) in ksmbd_tcp_run_kthread() argument
321 kthread = kthread_run(ksmbd_kthread_fn, (void *)iface, "ksmbd-%s", in ksmbd_tcp_run_kthread()
322 iface->name); in ksmbd_tcp_run_kthread()
327 iface->ksmbd_kthread = kthread; in ksmbd_tcp_run_kthread()
463 static int create_socket(struct interface *iface) in create_socket() argument
502 KERNEL_SOCKPTR(iface->name), in create_socket()
503 strlen(iface->name)); in create_socket()
529 iface->ksmbd_socket = ksmbd_socket; in create_socket()
530 ret = ksmbd_tcp_run_kthread(iface); in create_socket()
535 iface->state = IFACE_STATE_CONFIGURED; in create_socket()
542 iface->ksmbd_socket = NULL; in create_socket()
548 struct interface *iface; in ksmbd_find_netdev_name_iface_list() local
550 list_for_each_entry(iface, &iface_list, entry) in ksmbd_find_netdev_name_iface_list()
551 if (!strcmp(iface->name, netdev_name)) in ksmbd_find_netdev_name_iface_list()
552 return iface; in ksmbd_find_netdev_name_iface_list()
560 struct interface *iface; in ksmbd_netdev_event() local
568 iface = ksmbd_find_netdev_name_iface_list(netdev->name); in ksmbd_netdev_event()
569 if (iface && iface->state == IFACE_STATE_DOWN) { in ksmbd_netdev_event()
571 iface->name); in ksmbd_netdev_event()
572 ret = create_socket(iface); in ksmbd_netdev_event()
576 if (!iface && bind_additional_ifaces) { in ksmbd_netdev_event()
577 iface = alloc_iface(kstrdup(netdev->name, KSMBD_DEFAULT_GFP)); in ksmbd_netdev_event()
578 if (!iface) in ksmbd_netdev_event()
581 iface->name); in ksmbd_netdev_event()
582 ret = create_socket(iface); in ksmbd_netdev_event()
588 iface = ksmbd_find_netdev_name_iface_list(netdev->name); in ksmbd_netdev_event()
589 if (iface && iface->state == IFACE_STATE_CONFIGURED) { in ksmbd_netdev_event()
591 iface->name); in ksmbd_netdev_event()
592 tcp_stop_kthread(iface->ksmbd_kthread); in ksmbd_netdev_event()
593 iface->ksmbd_kthread = NULL; in ksmbd_netdev_event()
594 mutex_lock(&iface->sock_release_lock); in ksmbd_netdev_event()
595 tcp_destroy_socket(iface->ksmbd_socket); in ksmbd_netdev_event()
596 iface->ksmbd_socket = NULL; in ksmbd_netdev_event()
597 mutex_unlock(&iface->sock_release_lock); in ksmbd_netdev_event()
599 iface->state = IFACE_STATE_DOWN; in ksmbd_netdev_event()
633 struct interface *iface, *tmp; in ksmbd_tcp_destroy() local
637 list_for_each_entry_safe(iface, tmp, &iface_list, entry) { in ksmbd_tcp_destroy()
638 list_del(&iface->entry); in ksmbd_tcp_destroy()
639 kfree(iface->name); in ksmbd_tcp_destroy()
640 kfree(iface); in ksmbd_tcp_destroy()
646 struct interface *iface; in alloc_iface() local
651 iface = kzalloc(sizeof(struct interface), KSMBD_DEFAULT_GFP); in alloc_iface()
652 if (!iface) { in alloc_iface()
657 iface->name = ifname; in alloc_iface()
658 iface->state = IFACE_STATE_DOWN; in alloc_iface()
659 list_add(&iface->entry, &iface_list); in alloc_iface()
660 mutex_init(&iface->sock_release_lock); in alloc_iface()
661 return iface; in alloc_iface()