Lines Matching refs:call
280 struct rxrpc_call *call, in rxrpc_get_client_conn() argument
291 _enter("{%d,%lx},", call->debug_id, call->user_call_ID); in rxrpc_get_client_conn()
297 call->cong_cwnd = cp->peer->cong_cwnd; in rxrpc_get_client_conn()
298 if (call->cong_cwnd >= call->cong_ssthresh) in rxrpc_get_client_conn()
299 call->cong_mode = RXRPC_CALL_CONGEST_AVOIDANCE; in rxrpc_get_client_conn()
301 call->cong_mode = RXRPC_CALL_SLOW_START; in rxrpc_get_client_conn()
356 list_add_tail(&call->chan_wait_link, &candidate->waiting_calls); in rxrpc_get_client_conn()
359 call->conn = candidate; in rxrpc_get_client_conn()
360 call->security_ix = candidate->security_ix; in rxrpc_get_client_conn()
361 call->service_id = candidate->service_id; in rxrpc_get_client_conn()
410 call->conn = candidate; in rxrpc_get_client_conn()
411 call->security_ix = candidate->security_ix; in rxrpc_get_client_conn()
412 call->service_id = candidate->service_id; in rxrpc_get_client_conn()
432 call->conn = conn; in rxrpc_get_client_conn()
433 call->security_ix = conn->security_ix; in rxrpc_get_client_conn()
434 call->service_id = conn->service_id; in rxrpc_get_client_conn()
435 list_add(&call->chan_wait_link, &conn->waiting_calls); in rxrpc_get_client_conn()
540 rcu_assign_pointer(chan->call, NULL); in rxrpc_deactivate_one_channel()
553 struct rxrpc_call *call = list_entry(conn->waiting_calls.next, in rxrpc_activate_one_channel() local
564 write_lock_bh(&call->state_lock); in rxrpc_activate_one_channel()
565 if (!test_bit(RXRPC_CALL_TX_LASTQ, &call->flags)) in rxrpc_activate_one_channel()
566 call->state = RXRPC_CALL_CLIENT_SEND_REQUEST; in rxrpc_activate_one_channel()
568 call->state = RXRPC_CALL_CLIENT_AWAIT_REPLY; in rxrpc_activate_one_channel()
569 write_unlock_bh(&call->state_lock); in rxrpc_activate_one_channel()
571 rxrpc_see_call(call); in rxrpc_activate_one_channel()
572 list_del_init(&call->chan_wait_link); in rxrpc_activate_one_channel()
574 call->peer = rxrpc_get_peer(conn->params.peer); in rxrpc_activate_one_channel()
575 call->cid = conn->proto.cid | channel; in rxrpc_activate_one_channel()
576 call->call_id = call_id; in rxrpc_activate_one_channel()
578 trace_rxrpc_connect_call(call); in rxrpc_activate_one_channel()
580 call->cid, call->call_id, call->debug_id, conn->debug_id); in rxrpc_activate_one_channel()
594 chan->call_debug_id = call->debug_id; in rxrpc_activate_one_channel()
595 rcu_assign_pointer(chan->call, call); in rxrpc_activate_one_channel()
596 wake_up(&call->waitq); in rxrpc_activate_one_channel()
646 static int rxrpc_wait_for_channel(struct rxrpc_call *call, gfp_t gfp) in rxrpc_wait_for_channel() argument
650 _enter("%d", call->debug_id); in rxrpc_wait_for_channel()
652 if (!call->call_id) { in rxrpc_wait_for_channel()
660 add_wait_queue_exclusive(&call->waitq, &myself); in rxrpc_wait_for_channel()
663 if (call->call_id) 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 rxrpc_disconnect_client_call(call); in rxrpc_connect_call()
714 spin_lock_bh(&call->conn->params.peer->lock); in rxrpc_connect_call()
715 hlist_add_head_rcu(&call->error_link, in rxrpc_connect_call()
716 &call->conn->params.peer->error_targets); in rxrpc_connect_call()
717 spin_unlock_bh(&call->conn->params.peer->lock); in rxrpc_connect_call()
744 void rxrpc_expose_client_call(struct rxrpc_call *call) in rxrpc_expose_client_call() argument
746 unsigned int channel = call->cid & RXRPC_CHANNELMASK; in rxrpc_expose_client_call()
747 struct rxrpc_connection *conn = call->conn; in rxrpc_expose_client_call()
750 if (!test_and_set_bit(RXRPC_CALL_EXPOSED, &call->flags)) { in rxrpc_expose_client_call()
778 void rxrpc_disconnect_client_call(struct rxrpc_call *call) in rxrpc_disconnect_client_call() argument
780 unsigned int channel = call->cid & RXRPC_CHANNELMASK; in rxrpc_disconnect_client_call()
781 struct rxrpc_connection *conn = call->conn; in rxrpc_disconnect_client_call()
786 call->conn = NULL; in rxrpc_disconnect_client_call()
794 if (!list_empty(&call->chan_wait_link)) { in rxrpc_disconnect_client_call()
796 ASSERTCMP(call->call_id, ==, 0); in rxrpc_disconnect_client_call()
797 ASSERT(!test_bit(RXRPC_CALL_EXPOSED, &call->flags)); in rxrpc_disconnect_client_call()
798 list_del_init(&call->chan_wait_link); in rxrpc_disconnect_client_call()
813 ASSERTCMP(rcu_access_pointer(chan->call), ==, call); in rxrpc_disconnect_client_call()
824 if (test_bit(RXRPC_CALL_EXPOSED, &call->flags)) { in rxrpc_disconnect_client_call()
825 _debug("exposed %u,%u", call->call_id, call->abort_code); in rxrpc_disconnect_client_call()
826 __rxrpc_disconnect_call(conn, call); in rxrpc_disconnect_client_call()
841 if (call->completion == RXRPC_CALL_SUCCEEDED && in rxrpc_disconnect_client_call()
842 test_bit(RXRPC_CALL_EXPOSED, &call->flags)) { in rxrpc_disconnect_client_call()