Lines Matching refs:srv

252 	struct tipc_topsrv *srv = con->server;  in tipc_conn_send_to_sock()  local
286 tipc_topsrv_kern_evt(srv->net, evt); in tipc_conn_send_to_sock()
317 struct tipc_topsrv *srv = tipc_topsrv(net); in tipc_topsrv_queue_evt() local
321 con = tipc_conn_lookup(srv, conid); in tipc_topsrv_queue_evt()
337 if (queue_work(srv->send_wq, &con->swork)) in tipc_topsrv_queue_evt()
361 static int tipc_conn_rcv_sub(struct tipc_topsrv *srv, in tipc_conn_rcv_sub() argument
365 struct tipc_net *tn = tipc_net(srv->net); in tipc_conn_rcv_sub()
378 sub = tipc_sub_subscribe(srv->net, s, con->conid); in tipc_conn_rcv_sub()
390 struct tipc_topsrv *srv = con->server; in tipc_conn_rcv_from_sock() local
408 ret = tipc_conn_rcv_sub(srv, con, &s); in tipc_conn_rcv_from_sock()
457 struct tipc_topsrv *srv = container_of(work, struct tipc_topsrv, awork); in tipc_topsrv_accept() local
463 spin_lock_bh(&srv->idr_lock); in tipc_topsrv_accept()
464 if (!srv->listener) { in tipc_topsrv_accept()
465 spin_unlock_bh(&srv->idr_lock); in tipc_topsrv_accept()
468 lsock = srv->listener; in tipc_topsrv_accept()
469 spin_unlock_bh(&srv->idr_lock); in tipc_topsrv_accept()
475 con = tipc_conn_alloc(srv, newsock); in tipc_topsrv_accept()
500 struct tipc_topsrv *srv; in tipc_topsrv_listener_data_ready() local
505 srv = sk->sk_user_data; in tipc_topsrv_listener_data_ready()
506 if (srv) in tipc_topsrv_listener_data_ready()
507 queue_work(srv->rcv_wq, &srv->awork); in tipc_topsrv_listener_data_ready()
511 static int tipc_topsrv_create_listener(struct tipc_topsrv *srv) in tipc_topsrv_create_listener() argument
518 rc = sock_create_kern(srv->net, AF_TIPC, SOCK_SEQPACKET, 0, &lsock); in tipc_topsrv_create_listener()
522 srv->listener = lsock; in tipc_topsrv_create_listener()
526 sk->sk_user_data = srv; in tipc_topsrv_create_listener()
661 struct tipc_topsrv *srv; in tipc_topsrv_start() local
664 srv = kzalloc(sizeof(*srv), GFP_ATOMIC); in tipc_topsrv_start()
665 if (!srv) in tipc_topsrv_start()
668 srv->net = net; in tipc_topsrv_start()
669 INIT_WORK(&srv->awork, tipc_topsrv_accept); in tipc_topsrv_start()
671 strscpy(srv->name, name, sizeof(srv->name)); in tipc_topsrv_start()
672 tn->topsrv = srv; in tipc_topsrv_start()
675 spin_lock_init(&srv->idr_lock); in tipc_topsrv_start()
676 idr_init(&srv->conn_idr); in tipc_topsrv_start()
677 srv->idr_in_use = 0; in tipc_topsrv_start()
679 ret = tipc_topsrv_work_start(srv); in tipc_topsrv_start()
683 ret = tipc_topsrv_create_listener(srv); in tipc_topsrv_start()
690 tipc_topsrv_work_stop(srv); in tipc_topsrv_start()
692 kfree(srv); in tipc_topsrv_start()
698 struct tipc_topsrv *srv = tipc_topsrv(net); in tipc_topsrv_stop() local
699 struct socket *lsock = srv->listener; in tipc_topsrv_stop()
703 spin_lock_bh(&srv->idr_lock); in tipc_topsrv_stop()
704 for (id = 0; srv->idr_in_use; id++) { in tipc_topsrv_stop()
705 con = idr_find(&srv->conn_idr, id); in tipc_topsrv_stop()
707 spin_unlock_bh(&srv->idr_lock); in tipc_topsrv_stop()
709 spin_lock_bh(&srv->idr_lock); in tipc_topsrv_stop()
714 srv->listener = NULL; in tipc_topsrv_stop()
715 spin_unlock_bh(&srv->idr_lock); in tipc_topsrv_stop()
717 tipc_topsrv_work_stop(srv); in tipc_topsrv_stop()
719 idr_destroy(&srv->conn_idr); in tipc_topsrv_stop()
720 kfree(srv); in tipc_topsrv_stop()