Lines Matching refs:call
276 struct rxrpc_call *call, in rxrpc_get_client_conn() argument
287 _enter("{%d,%lx},", call->debug_id, call->user_call_ID); in rxrpc_get_client_conn()
293 call->cong_cwnd = cp->peer->cong_cwnd; in rxrpc_get_client_conn()
294 if (call->cong_cwnd >= call->cong_ssthresh) in rxrpc_get_client_conn()
295 call->cong_mode = RXRPC_CALL_CONGEST_AVOIDANCE; in rxrpc_get_client_conn()
297 call->cong_mode = RXRPC_CALL_SLOW_START; in rxrpc_get_client_conn()
352 list_add(&call->chan_wait_link, &candidate->waiting_calls); in rxrpc_get_client_conn()
355 call->conn = candidate; in rxrpc_get_client_conn()
356 call->security = candidate->security; in rxrpc_get_client_conn()
357 call->security_ix = candidate->security_ix; in rxrpc_get_client_conn()
358 call->service_id = candidate->service_id; in rxrpc_get_client_conn()
407 call->conn = candidate; in rxrpc_get_client_conn()
408 call->security = candidate->security; in rxrpc_get_client_conn()
409 call->security_ix = candidate->security_ix; in rxrpc_get_client_conn()
410 call->service_id = candidate->service_id; in rxrpc_get_client_conn()
430 call->conn = conn; in rxrpc_get_client_conn()
431 call->security = conn->security; in rxrpc_get_client_conn()
432 call->security_ix = conn->security_ix; in rxrpc_get_client_conn()
433 call->service_id = conn->service_id; in rxrpc_get_client_conn()
434 list_add_tail(&call->chan_wait_link, &conn->waiting_calls); in rxrpc_get_client_conn()
539 rcu_assign_pointer(chan->call, NULL); in rxrpc_deactivate_one_channel()
552 struct rxrpc_call *call = list_entry(conn->waiting_calls.next, in rxrpc_activate_one_channel() local
563 write_lock_bh(&call->state_lock); in rxrpc_activate_one_channel()
564 call->state = RXRPC_CALL_CLIENT_SEND_REQUEST; in rxrpc_activate_one_channel()
565 write_unlock_bh(&call->state_lock); in rxrpc_activate_one_channel()
567 rxrpc_see_call(call); in rxrpc_activate_one_channel()
568 list_del_init(&call->chan_wait_link); in rxrpc_activate_one_channel()
570 call->peer = rxrpc_get_peer(conn->params.peer); in rxrpc_activate_one_channel()
571 call->cid = conn->proto.cid | channel; in rxrpc_activate_one_channel()
572 call->call_id = call_id; in rxrpc_activate_one_channel()
574 trace_rxrpc_connect_call(call); in rxrpc_activate_one_channel()
576 call->cid, call->call_id, call->debug_id, conn->debug_id); in rxrpc_activate_one_channel()
590 chan->call_debug_id = call->debug_id; in rxrpc_activate_one_channel()
591 rcu_assign_pointer(chan->call, call); in rxrpc_activate_one_channel()
592 wake_up(&call->waitq); in rxrpc_activate_one_channel()
642 static int rxrpc_wait_for_channel(struct rxrpc_call *call, gfp_t gfp) in rxrpc_wait_for_channel() argument
646 _enter("%d", call->debug_id); in rxrpc_wait_for_channel()
648 if (!call->call_id) { in rxrpc_wait_for_channel()
656 add_wait_queue_exclusive(&call->waitq, &myself); in rxrpc_wait_for_channel()
658 if (test_bit(RXRPC_CALL_IS_INTR, &call->flags)) in rxrpc_wait_for_channel()
662 if (call->call_id) in rxrpc_wait_for_channel()
664 if (test_bit(RXRPC_CALL_IS_INTR, &call->flags) && in rxrpc_wait_for_channel()
671 remove_wait_queue(&call->waitq, &myself); in rxrpc_wait_for_channel()
688 struct rxrpc_call *call, in rxrpc_connect_call() argument
696 _enter("{%d,%lx},", call->debug_id, call->user_call_ID); in rxrpc_connect_call()
701 ret = rxrpc_get_client_conn(rx, call, cp, srx, gfp); in rxrpc_connect_call()
705 rxrpc_animate_client_conn(rxnet, call->conn); in rxrpc_connect_call()
706 rxrpc_activate_channels(call->conn); in rxrpc_connect_call()
708 ret = rxrpc_wait_for_channel(call, gfp); in rxrpc_connect_call()
710 trace_rxrpc_client(call->conn, ret, rxrpc_client_chan_wait_failed); in rxrpc_connect_call()
711 rxrpc_disconnect_client_call(call); in rxrpc_connect_call()
715 spin_lock_bh(&call->conn->params.peer->lock); in rxrpc_connect_call()
716 hlist_add_head_rcu(&call->error_link, in rxrpc_connect_call()
717 &call->conn->params.peer->error_targets); in rxrpc_connect_call()
718 spin_unlock_bh(&call->conn->params.peer->lock); in rxrpc_connect_call()
745 void rxrpc_expose_client_call(struct rxrpc_call *call) in rxrpc_expose_client_call() argument
747 unsigned int channel = call->cid & RXRPC_CHANNELMASK; in rxrpc_expose_client_call()
748 struct rxrpc_connection *conn = call->conn; in rxrpc_expose_client_call()
751 if (!test_and_set_bit(RXRPC_CALL_EXPOSED, &call->flags)) { in rxrpc_expose_client_call()
779 void rxrpc_disconnect_client_call(struct rxrpc_call *call) in rxrpc_disconnect_client_call() argument
781 struct rxrpc_connection *conn = call->conn; in rxrpc_disconnect_client_call()
789 cid = call->cid; in rxrpc_disconnect_client_call()
795 call->conn = NULL; in rxrpc_disconnect_client_call()
801 if (!list_empty(&call->chan_wait_link)) { in rxrpc_disconnect_client_call()
803 ASSERTCMP(call->call_id, ==, 0); in rxrpc_disconnect_client_call()
804 ASSERT(!test_bit(RXRPC_CALL_EXPOSED, &call->flags)); in rxrpc_disconnect_client_call()
805 list_del_init(&call->chan_wait_link); in rxrpc_disconnect_client_call()
820 if (rcu_access_pointer(chan->call) != call) { in rxrpc_disconnect_client_call()
834 if (test_bit(RXRPC_CALL_EXPOSED, &call->flags)) { in rxrpc_disconnect_client_call()
835 _debug("exposed %u,%u", call->call_id, call->abort_code); in rxrpc_disconnect_client_call()
836 __rxrpc_disconnect_call(conn, call); in rxrpc_disconnect_client_call()
851 if (call->completion == RXRPC_CALL_SUCCEEDED && in rxrpc_disconnect_client_call()
852 test_bit(RXRPC_CALL_EXPOSED, &call->flags)) { in rxrpc_disconnect_client_call()