Lines Matching defs:call

2 /* incoming call handling
25 static void rxrpc_dummy_notify(struct sock *sk, struct rxrpc_call *call,
31 * Preallocate a single service call, connection and peer and, if possible,
40 struct rxrpc_call *call, *xcall;
97 call = rxrpc_alloc_call(rx, gfp, debug_id);
98 if (!call)
100 call->flags |= (1 << RXRPC_CALL_IS_SERVICE);
101 rxrpc_set_call_state(call, RXRPC_CALL_SERVER_PREALLOC);
102 __set_bit(RXRPC_CALL_EV_INITIAL_PING, &call->events);
104 trace_rxrpc_call(call->debug_id, refcount_read(&call->ref),
123 call->user_call_ID = user_call_ID;
124 call->notify_rx = notify_rx;
127 rxrpc_get_call(call, rxrpc_call_get_kernel_service);
128 rx->app_ops->user_attach_call(call, user_call_ID);
131 rxrpc_get_call(call, rxrpc_call_get_userid);
132 rb_link_node(&call->sock_node, parent, pp);
133 rb_insert_color(&call->sock_node, &rx->calls);
134 set_bit(RXRPC_CALL_HAS_USERID, &call->flags);
136 list_add(&call->sock_link, &rx->sock_calls);
140 rxnet = call->rxnet;
142 list_add_tail_rcu(&call->link, &rxnet->calls);
145 b->call_backlog[call_head] = call;
147 _leave(" = 0 [%d -> %lx]", call->debug_id, user_call_ID);
152 rxrpc_prefail_call(call, RXRPC_CALL_LOCAL_ERROR, -EBADSLT);
153 rxrpc_cleanup_call(call);
221 struct rxrpc_call *call = b->call_backlog[tail];
222 rxrpc_see_call(call, rxrpc_call_see_discard);
223 rcu_assign_pointer(call->socket, rx);
226 _debug("discard %lx", call->user_call_ID);
227 rx->app_ops->discard_new_call(call, call->user_call_ID);
228 if (call->notify_rx)
229 call->notify_rx = rxrpc_dummy_notify;
230 rxrpc_put_call(call, rxrpc_call_put_kernel);
232 rxrpc_call_completed(call);
233 rxrpc_release_call(rx, call);
234 rxrpc_put_call(call, rxrpc_call_put_discard_prealloc);
242 * Allocate a new incoming call from the prealloc pool, along with a connection
254 struct rxrpc_call *call;
306 /* And now we can allocate and set up a new call */
307 call = b->call_backlog[call_tail];
312 rxrpc_see_call(call, rxrpc_call_see_accept);
313 call->local = rxrpc_get_local(conn->local, rxrpc_local_get_call);
314 call->conn = conn;
315 call->security = conn->security;
316 call->security_ix = conn->security_ix;
317 call->peer = rxrpc_get_peer(conn->peer, rxrpc_peer_get_accept);
318 call->dest_srx = peer->srx;
319 call->cong_ssthresh = call->peer->cong_ssthresh;
320 call->tx_last_sent = ktime_get_real();
321 return call;
325 * Set up a new incoming call. Called from the I/O thread.
327 * If this is for a kernel service, when we allocate the call, it will have
343 struct rxrpc_call *call = NULL;
348 /* Don't set up a call for anything other than a DATA packet. */
355 * begin a call are explicitly rejected and the rest are just
382 call = rxrpc_alloc_incoming_call(rx, local, peer, conn, sec, peer_srx,
384 if (!call) {
389 trace_rxrpc_receive(call, rxrpc_receive_incoming,
392 /* Make the call live. */
393 rxrpc_incoming_call(rx, call, skb);
394 conn = call->conn;
398 rx->app_ops->notify_new_call(&rx->sk, call, call->user_call_ID);
403 set_bit(RXRPC_CONN_EV_CHALLENGE, &call->conn->events);
404 rxrpc_queue_conn(call->conn, rxrpc_conn_queue_challenge);
410 rxrpc_assess_MTU_size(local, call->peer);
412 if (hlist_unhashed(&call->error_link)) {
413 spin_lock_irq(&call->peer->lock);
414 hlist_add_head(&call->error_link, &call->peer->error_targets);
415 spin_unlock_irq(&call->peer->lock);
418 _leave(" = %p{%d}", call, call->debug_id);
419 rxrpc_queue_rx_call_packet(call, skb);
420 rxrpc_put_call(call, rxrpc_call_put_input);
442 * Charge up socket with preallocated calls, attaching user call IDs.
458 * @notify_rx: Event notification function for the call
459 * @user_call_ID: The tag to attach to the preallocated call
466 * call.
468 * Note that the call may be come connected before this function returns.