Lines Matching full:rx
34 static int rxrpc_service_prealloc_one(struct rxrpc_sock *rx, in rxrpc_service_prealloc_one() argument
41 struct rxrpc_net *rxnet = rxrpc_net(sock_net(&rx->sk)); in rxrpc_service_prealloc_one()
47 max = rx->sk.sk_max_ack_backlog; in rxrpc_service_prealloc_one()
48 tmp = rx->sk.sk_ack_backlog; in rxrpc_service_prealloc_one()
73 peer = rxrpc_alloc_peer(rx->local, gfp, rxrpc_peer_new_prealloc); in rxrpc_service_prealloc_one()
97 call = rxrpc_alloc_call(rx, gfp, debug_id); in rxrpc_service_prealloc_one()
107 write_lock(&rx->call_lock); in rxrpc_service_prealloc_one()
110 pp = &rx->calls.rb_node; in rxrpc_service_prealloc_one()
125 if (rx->app_ops && in rxrpc_service_prealloc_one()
126 rx->app_ops->user_attach_call) { in rxrpc_service_prealloc_one()
128 rx->app_ops->user_attach_call(call, user_call_ID); in rxrpc_service_prealloc_one()
133 rb_insert_color(&call->sock_node, &rx->calls); in rxrpc_service_prealloc_one()
136 list_add(&call->sock_link, &rx->sock_calls); in rxrpc_service_prealloc_one()
138 write_unlock(&rx->call_lock); in rxrpc_service_prealloc_one()
151 write_unlock(&rx->call_lock); in rxrpc_service_prealloc_one()
162 int rxrpc_service_prealloc(struct rxrpc_sock *rx, gfp_t gfp) in rxrpc_service_prealloc() argument
164 struct rxrpc_backlog *b = rx->backlog; in rxrpc_service_prealloc()
170 rx->backlog = b; in rxrpc_service_prealloc()
179 void rxrpc_discard_prealloc(struct rxrpc_sock *rx) in rxrpc_discard_prealloc() argument
181 struct rxrpc_backlog *b = rx->backlog; in rxrpc_discard_prealloc()
182 struct rxrpc_net *rxnet = rxrpc_net(sock_net(&rx->sk)); in rxrpc_discard_prealloc()
187 rx->backlog = NULL; in rxrpc_discard_prealloc()
192 spin_lock_irq(&rx->incoming_lock); in rxrpc_discard_prealloc()
193 spin_unlock_irq(&rx->incoming_lock); in rxrpc_discard_prealloc()
223 rcu_assign_pointer(call->socket, rx); in rxrpc_discard_prealloc()
224 if (rx->app_ops && in rxrpc_discard_prealloc()
225 rx->app_ops->discard_new_call) { in rxrpc_discard_prealloc()
227 rx->app_ops->discard_new_call(call, call->user_call_ID); in rxrpc_discard_prealloc()
233 rxrpc_release_call(rx, call); in rxrpc_discard_prealloc()
245 static struct rxrpc_call *rxrpc_alloc_incoming_call(struct rxrpc_sock *rx, in rxrpc_alloc_incoming_call() argument
253 struct rxrpc_backlog *b = rx->backlog; in rxrpc_alloc_incoming_call()
300 rxrpc_new_incoming_connection(rx, conn, sec, skb); in rxrpc_alloc_incoming_call()
344 struct rxrpc_sock *rx; in rxrpc_new_incoming_call() local
358 rx = local->service; in rxrpc_new_incoming_call()
359 if (!rx || (sp->hdr.serviceId != rx->srx.srx_service && in rxrpc_new_incoming_call()
360 sp->hdr.serviceId != rx->second_service) in rxrpc_new_incoming_call()
369 sec = rxrpc_get_incoming_security(rx, skb); in rxrpc_new_incoming_call()
374 spin_lock(&rx->incoming_lock); in rxrpc_new_incoming_call()
375 if (rx->sk.sk_state == RXRPC_SERVER_LISTEN_DISABLED || in rxrpc_new_incoming_call()
376 rx->sk.sk_state == RXRPC_CLOSE) { in rxrpc_new_incoming_call()
382 call = rxrpc_alloc_incoming_call(rx, local, peer, conn, sec, peer_srx, in rxrpc_new_incoming_call()
393 rxrpc_incoming_call(rx, call, skb); in rxrpc_new_incoming_call()
396 if (rx->app_ops && in rxrpc_new_incoming_call()
397 rx->app_ops->notify_new_call) in rxrpc_new_incoming_call()
398 rx->app_ops->notify_new_call(&rx->sk, call, call->user_call_ID); in rxrpc_new_incoming_call()
408 spin_unlock(&rx->incoming_lock); in rxrpc_new_incoming_call()
432 spin_unlock(&rx->incoming_lock); in rxrpc_new_incoming_call()
444 int rxrpc_user_charge_accept(struct rxrpc_sock *rx, unsigned long user_call_ID) in rxrpc_user_charge_accept() argument
446 struct rxrpc_backlog *b = rx->backlog; in rxrpc_user_charge_accept()
448 if (rx->sk.sk_state == RXRPC_CLOSE) in rxrpc_user_charge_accept()
451 return rxrpc_service_prealloc_one(rx, b, NULL, user_call_ID, GFP_KERNEL, in rxrpc_user_charge_accept()
474 struct rxrpc_sock *rx = rxrpc_sk(sock->sk); in rxrpc_kernel_charge_accept() local
475 struct rxrpc_backlog *b = rx->backlog; in rxrpc_kernel_charge_accept()
480 return rxrpc_service_prealloc_one(rx, b, notify_rx, user_call_ID, in rxrpc_kernel_charge_accept()