Lines Matching defs:call
66 * When searching for a service call, if we find a peer but no connection, we
67 * return that through *_peer in case we need to create a new service call.
160 * Disconnect a call and clear any channel it occupies when that call
162 * call's ref on the connection.
165 struct rxrpc_call *call)
168 &conn->channels[call->cid & RXRPC_CHANNELMASK];
170 _enter("%d,%x", conn->debug_id, call->cid);
172 if (rcu_access_pointer(chan->call) == call) {
173 /* Save the result of the call so that we can repeat it if necessary
174 * through the channel, whilst disposing of the actual call record.
176 trace_rxrpc_disconnect_call(call);
177 switch (call->completion) {
179 chan->last_seq = call->rx_hard_ack;
183 chan->last_abort = call->abort_code;
197 rcu_assign_pointer(chan->call, NULL);
204 * Disconnect a call and clear any channel it occupies when that call
207 void rxrpc_disconnect_call(struct rxrpc_call *call)
209 struct rxrpc_connection *conn = call->conn;
211 call->peer->cong_cwnd = call->cong_cwnd;
213 if (!hlist_unhashed(&call->error_link)) {
214 spin_lock_bh(&call->peer->lock);
215 hlist_del_rcu(&call->error_link);
216 spin_unlock_bh(&call->peer->lock);
219 if (rxrpc_is_client_call(call))
220 return rxrpc_disconnect_client_call(conn->bundle, call);
223 __rxrpc_disconnect_call(conn, call);
226 set_bit(RXRPC_CALL_DISCONNECTED, &call->flags);
237 ASSERT(!rcu_access_pointer(conn->channels[0].call) &&
238 !rcu_access_pointer(conn->channels[1].call) &&
239 !rcu_access_pointer(conn->channels[2].call) &&
240 !rcu_access_pointer(conn->channels[3].call));