Lines Matching refs:srv
251 struct tipc_topsrv *srv = con->server; in tipc_conn_send_to_sock() local
285 tipc_topsrv_kern_evt(srv->net, evt); in tipc_conn_send_to_sock()
316 struct tipc_topsrv *srv = tipc_topsrv(net); in tipc_topsrv_queue_evt() local
320 con = tipc_conn_lookup(srv, conid); in tipc_topsrv_queue_evt()
336 if (queue_work(srv->send_wq, &con->swork)) in tipc_topsrv_queue_evt()
360 static int tipc_conn_rcv_sub(struct tipc_topsrv *srv, in tipc_conn_rcv_sub() argument
364 struct tipc_net *tn = tipc_net(srv->net); in tipc_conn_rcv_sub()
377 sub = tipc_sub_subscribe(srv->net, s, con->conid); in tipc_conn_rcv_sub()
389 struct tipc_topsrv *srv = con->server; in tipc_conn_rcv_from_sock() local
407 ret = tipc_conn_rcv_sub(srv, con, &s); in tipc_conn_rcv_from_sock()
454 struct tipc_topsrv *srv = container_of(work, struct tipc_topsrv, awork); in tipc_topsrv_accept() local
460 spin_lock_bh(&srv->idr_lock); in tipc_topsrv_accept()
461 if (!srv->listener) { in tipc_topsrv_accept()
462 spin_unlock_bh(&srv->idr_lock); in tipc_topsrv_accept()
465 lsock = srv->listener; in tipc_topsrv_accept()
466 spin_unlock_bh(&srv->idr_lock); in tipc_topsrv_accept()
472 con = tipc_conn_alloc(srv, newsock); in tipc_topsrv_accept()
497 struct tipc_topsrv *srv; in tipc_topsrv_listener_data_ready() local
500 srv = sk->sk_user_data; in tipc_topsrv_listener_data_ready()
501 if (srv) in tipc_topsrv_listener_data_ready()
502 queue_work(srv->rcv_wq, &srv->awork); in tipc_topsrv_listener_data_ready()
506 static int tipc_topsrv_create_listener(struct tipc_topsrv *srv) in tipc_topsrv_create_listener() argument
513 rc = sock_create_kern(srv->net, AF_TIPC, SOCK_SEQPACKET, 0, &lsock); in tipc_topsrv_create_listener()
517 srv->listener = lsock; in tipc_topsrv_create_listener()
521 sk->sk_user_data = srv; in tipc_topsrv_create_listener()
656 struct tipc_topsrv *srv; in tipc_topsrv_start() local
659 srv = kzalloc(sizeof(*srv), GFP_ATOMIC); in tipc_topsrv_start()
660 if (!srv) in tipc_topsrv_start()
663 srv->net = net; in tipc_topsrv_start()
664 INIT_WORK(&srv->awork, tipc_topsrv_accept); in tipc_topsrv_start()
666 strscpy(srv->name, name, sizeof(srv->name)); in tipc_topsrv_start()
667 tn->topsrv = srv; in tipc_topsrv_start()
670 spin_lock_init(&srv->idr_lock); in tipc_topsrv_start()
671 idr_init(&srv->conn_idr); in tipc_topsrv_start()
672 srv->idr_in_use = 0; in tipc_topsrv_start()
674 ret = tipc_topsrv_work_start(srv); in tipc_topsrv_start()
678 ret = tipc_topsrv_create_listener(srv); in tipc_topsrv_start()
685 tipc_topsrv_work_stop(srv); in tipc_topsrv_start()
687 kfree(srv); in tipc_topsrv_start()
693 struct tipc_topsrv *srv = tipc_topsrv(net); in tipc_topsrv_stop() local
694 struct socket *lsock = srv->listener; in tipc_topsrv_stop()
698 spin_lock_bh(&srv->idr_lock); in tipc_topsrv_stop()
699 for (id = 0; srv->idr_in_use; id++) { in tipc_topsrv_stop()
700 con = idr_find(&srv->conn_idr, id); in tipc_topsrv_stop()
702 spin_unlock_bh(&srv->idr_lock); in tipc_topsrv_stop()
704 spin_lock_bh(&srv->idr_lock); in tipc_topsrv_stop()
709 srv->listener = NULL; in tipc_topsrv_stop()
710 spin_unlock_bh(&srv->idr_lock); in tipc_topsrv_stop()
712 tipc_topsrv_work_stop(srv); in tipc_topsrv_stop()
714 idr_destroy(&srv->conn_idr); in tipc_topsrv_stop()
715 kfree(srv); in tipc_topsrv_stop()