Lines Matching refs:s

123 static struct tipc_conn *tipc_conn_lookup(struct tipc_server *s, int conid)  in tipc_conn_lookup()  argument
127 spin_lock_bh(&s->idr_lock); in tipc_conn_lookup()
128 con = idr_find(&s->conn_idr, conid); in tipc_conn_lookup()
131 spin_unlock_bh(&s->idr_lock); in tipc_conn_lookup()
189 struct tipc_server *s = con->server; in tipc_close_conn() local
193 s->tipc_conn_shutdown(con->conid, con->usr_data); in tipc_close_conn()
195 spin_lock_bh(&s->idr_lock); in tipc_close_conn()
196 idr_remove(&s->conn_idr, con->conid); in tipc_close_conn()
197 s->idr_in_use--; in tipc_close_conn()
198 spin_unlock_bh(&s->idr_lock); in tipc_close_conn()
214 static struct tipc_conn *tipc_alloc_conn(struct tipc_server *s) in tipc_alloc_conn() argument
229 spin_lock_bh(&s->idr_lock); in tipc_alloc_conn()
230 ret = idr_alloc(&s->conn_idr, con, 0, 0, GFP_ATOMIC); in tipc_alloc_conn()
233 spin_unlock_bh(&s->idr_lock); in tipc_alloc_conn()
237 s->idr_in_use++; in tipc_alloc_conn()
238 spin_unlock_bh(&s->idr_lock); in tipc_alloc_conn()
241 con->server = s; in tipc_alloc_conn()
249 struct tipc_server *s = con->server; in tipc_receive_from_sock() local
255 buf = kmem_cache_alloc(s->rcvbuf_cache, GFP_ATOMIC); in tipc_receive_from_sock()
262 iov.iov_len = s->max_rcvbuf_size; in tipc_receive_from_sock()
267 kmem_cache_free(s->rcvbuf_cache, buf); in tipc_receive_from_sock()
271 s->tipc_conn_recvmsg(sock_net(con->sock->sk), con->conid, &addr, in tipc_receive_from_sock()
274 kmem_cache_free(s->rcvbuf_cache, buf); in tipc_receive_from_sock()
290 struct tipc_server *s = con->server; in tipc_accept_from_sock() local
311 newcon->usr_data = s->tipc_conn_new(newcon->conid); in tipc_accept_from_sock()
320 struct tipc_server *s = con->server; in tipc_create_listen_sock() local
324 ret = __sock_create(s->net, AF_TIPC, SOCK_SEQPACKET, 0, &sock, 1); in tipc_create_listen_sock()
328 (char *)&s->imp, sizeof(s->imp)); in tipc_create_listen_sock()
331 ret = kernel_bind(sock, (struct sockaddr *)s->saddr, sizeof(*s->saddr)); in tipc_create_listen_sock()
335 switch (s->type) { in tipc_create_listen_sock()
349 pr_err("Unknown socket type %d\n", s->type); in tipc_create_listen_sock()
380 static int tipc_open_listening_sock(struct tipc_server *s) in tipc_open_listening_sock() argument
385 con = tipc_alloc_conn(s); in tipc_open_listening_sock()
391 idr_remove(&s->conn_idr, con->conid); in tipc_open_listening_sock()
392 s->idr_in_use--; in tipc_open_listening_sock()
441 int tipc_conn_sendmsg(struct tipc_server *s, int conid, in tipc_conn_sendmsg() argument
447 con = tipc_conn_lookup(s, conid); in tipc_conn_sendmsg()
465 if (!queue_work(s->send_wq, &con->swork)) in tipc_conn_sendmsg()
473 void tipc_conn_terminate(struct tipc_server *s, int conid) in tipc_conn_terminate() argument
477 con = tipc_conn_lookup(s, conid); in tipc_conn_terminate()
487 struct tipc_server *s = con->server; in tipc_send_to_sock() local
503 if (s->type == SOCK_DGRAM || s->type == SOCK_RDM) { in tipc_send_to_sock()
562 static void tipc_work_stop(struct tipc_server *s) in tipc_work_stop() argument
564 destroy_workqueue(s->rcv_wq); in tipc_work_stop()
565 destroy_workqueue(s->send_wq); in tipc_work_stop()
568 static int tipc_work_start(struct tipc_server *s) in tipc_work_start() argument
570 s->rcv_wq = alloc_workqueue("tipc_rcv", WQ_UNBOUND, 1); in tipc_work_start()
571 if (!s->rcv_wq) { in tipc_work_start()
576 s->send_wq = alloc_workqueue("tipc_send", WQ_UNBOUND, 1); in tipc_work_start()
577 if (!s->send_wq) { in tipc_work_start()
579 destroy_workqueue(s->rcv_wq); in tipc_work_start()
586 int tipc_server_start(struct tipc_server *s) in tipc_server_start() argument
590 spin_lock_init(&s->idr_lock); in tipc_server_start()
591 idr_init(&s->conn_idr); in tipc_server_start()
592 s->idr_in_use = 0; in tipc_server_start()
594 s->rcvbuf_cache = kmem_cache_create(s->name, s->max_rcvbuf_size, in tipc_server_start()
596 if (!s->rcvbuf_cache) in tipc_server_start()
599 ret = tipc_work_start(s); in tipc_server_start()
601 kmem_cache_destroy(s->rcvbuf_cache); in tipc_server_start()
604 ret = tipc_open_listening_sock(s); in tipc_server_start()
606 tipc_work_stop(s); in tipc_server_start()
607 kmem_cache_destroy(s->rcvbuf_cache); in tipc_server_start()
613 void tipc_server_stop(struct tipc_server *s) in tipc_server_stop() argument
619 spin_lock_bh(&s->idr_lock); in tipc_server_stop()
620 for (id = 0; total < s->idr_in_use; id++) { in tipc_server_stop()
621 con = idr_find(&s->conn_idr, id); in tipc_server_stop()
624 spin_unlock_bh(&s->idr_lock); in tipc_server_stop()
626 spin_lock_bh(&s->idr_lock); in tipc_server_stop()
629 spin_unlock_bh(&s->idr_lock); in tipc_server_stop()
631 tipc_work_stop(s); in tipc_server_stop()
632 kmem_cache_destroy(s->rcvbuf_cache); in tipc_server_stop()
633 idr_destroy(&s->conn_idr); in tipc_server_stop()