Lines Matching refs:srv

250 	struct tipc_topsrv *srv = con->server;  in tipc_conn_send_to_sock()  local
284 tipc_topsrv_kern_evt(srv->net, evt); in tipc_conn_send_to_sock()
315 struct tipc_topsrv *srv = tipc_topsrv(net); in tipc_topsrv_queue_evt() local
319 con = tipc_conn_lookup(srv, conid); in tipc_topsrv_queue_evt()
335 if (queue_work(srv->send_wq, &con->swork)) in tipc_topsrv_queue_evt()
359 static int tipc_conn_rcv_sub(struct tipc_topsrv *srv, in tipc_conn_rcv_sub() argument
363 struct tipc_net *tn = tipc_net(srv->net); in tipc_conn_rcv_sub()
375 sub = tipc_sub_subscribe(srv->net, s, con->conid); in tipc_conn_rcv_sub()
387 struct tipc_topsrv *srv = con->server; in tipc_conn_rcv_from_sock() local
403 ret = tipc_conn_rcv_sub(srv, con, &s); in tipc_conn_rcv_from_sock()
449 struct tipc_topsrv *srv = container_of(work, struct tipc_topsrv, awork); in tipc_topsrv_accept() local
450 struct socket *lsock = srv->listener; in tipc_topsrv_accept()
460 con = tipc_conn_alloc(srv); in tipc_topsrv_accept()
485 struct tipc_topsrv *srv; in tipc_topsrv_listener_data_ready() local
488 srv = sk->sk_user_data; in tipc_topsrv_listener_data_ready()
489 if (srv->listener) in tipc_topsrv_listener_data_ready()
490 queue_work(srv->rcv_wq, &srv->awork); in tipc_topsrv_listener_data_ready()
494 static int tipc_topsrv_create_listener(struct tipc_topsrv *srv) in tipc_topsrv_create_listener() argument
502 rc = sock_create_kern(srv->net, AF_TIPC, SOCK_SEQPACKET, 0, &lsock); in tipc_topsrv_create_listener()
506 srv->listener = lsock; in tipc_topsrv_create_listener()
510 sk->sk_user_data = srv; in tipc_topsrv_create_listener()
644 struct tipc_topsrv *srv; in tipc_topsrv_start() local
647 srv = kzalloc(sizeof(*srv), GFP_ATOMIC); in tipc_topsrv_start()
648 if (!srv) in tipc_topsrv_start()
651 srv->net = net; in tipc_topsrv_start()
652 INIT_WORK(&srv->awork, tipc_topsrv_accept); in tipc_topsrv_start()
654 strscpy(srv->name, name, sizeof(srv->name)); in tipc_topsrv_start()
655 tn->topsrv = srv; in tipc_topsrv_start()
658 spin_lock_init(&srv->idr_lock); in tipc_topsrv_start()
659 idr_init(&srv->conn_idr); in tipc_topsrv_start()
660 srv->idr_in_use = 0; in tipc_topsrv_start()
662 ret = tipc_topsrv_work_start(srv); in tipc_topsrv_start()
666 ret = tipc_topsrv_create_listener(srv); in tipc_topsrv_start()
668 tipc_topsrv_work_stop(srv); in tipc_topsrv_start()
675 struct tipc_topsrv *srv = tipc_topsrv(net); in tipc_topsrv_stop() local
676 struct socket *lsock = srv->listener; in tipc_topsrv_stop()
680 spin_lock_bh(&srv->idr_lock); in tipc_topsrv_stop()
681 for (id = 0; srv->idr_in_use; id++) { in tipc_topsrv_stop()
682 con = idr_find(&srv->conn_idr, id); in tipc_topsrv_stop()
684 spin_unlock_bh(&srv->idr_lock); in tipc_topsrv_stop()
686 spin_lock_bh(&srv->idr_lock); in tipc_topsrv_stop()
691 srv->listener = NULL; in tipc_topsrv_stop()
692 spin_unlock_bh(&srv->idr_lock); in tipc_topsrv_stop()
694 tipc_topsrv_work_stop(srv); in tipc_topsrv_stop()
695 idr_destroy(&srv->conn_idr); in tipc_topsrv_stop()
696 kfree(srv); in tipc_topsrv_stop()