Lines Matching refs:call
350 struct rxrpc_call *call, in rxrpc_prep_call() argument
357 _enter("{%d,%lx},", call->debug_id, call->user_call_ID); in rxrpc_prep_call()
363 call->cong_cwnd = cp->peer->cong_cwnd; in rxrpc_prep_call()
364 if (call->cong_cwnd >= call->cong_ssthresh) in rxrpc_prep_call()
365 call->cong_mode = RXRPC_CALL_CONGEST_AVOIDANCE; in rxrpc_prep_call()
367 call->cong_mode = RXRPC_CALL_SLOW_START; in rxrpc_prep_call()
369 __set_bit(RXRPC_CALL_UPGRADE, &call->flags); in rxrpc_prep_call()
380 list_add_tail(&call->chan_wait_link, &bundle->waiting_calls); in rxrpc_prep_call()
463 struct rxrpc_call *call; in rxrpc_maybe_add_conn() local
477 call = list_first_entry(&bundle->waiting_calls, in rxrpc_maybe_add_conn()
479 if (test_bit(RXRPC_CALL_UPGRADE, &call->flags)) in rxrpc_maybe_add_conn()
510 struct rxrpc_call *call = list_entry(bundle->waiting_calls.next, in rxrpc_activate_one_channel() local
524 rxrpc_see_call(call); in rxrpc_activate_one_channel()
525 list_del_init(&call->chan_wait_link); in rxrpc_activate_one_channel()
526 call->peer = rxrpc_get_peer(conn->params.peer); in rxrpc_activate_one_channel()
527 call->conn = rxrpc_get_connection(conn); in rxrpc_activate_one_channel()
528 call->cid = conn->proto.cid | channel; in rxrpc_activate_one_channel()
529 call->call_id = call_id; in rxrpc_activate_one_channel()
530 call->security = conn->security; in rxrpc_activate_one_channel()
531 call->security_ix = conn->security_ix; in rxrpc_activate_one_channel()
532 call->service_id = conn->service_id; in rxrpc_activate_one_channel()
534 trace_rxrpc_connect_call(call); in rxrpc_activate_one_channel()
536 call->cid, call->call_id, call->debug_id, conn->debug_id); in rxrpc_activate_one_channel()
538 write_lock_bh(&call->state_lock); in rxrpc_activate_one_channel()
539 call->state = RXRPC_CALL_CLIENT_SEND_REQUEST; in rxrpc_activate_one_channel()
540 write_unlock_bh(&call->state_lock); in rxrpc_activate_one_channel()
555 chan->call_debug_id = call->debug_id; in rxrpc_activate_one_channel()
556 rcu_assign_pointer(chan->call, call); in rxrpc_activate_one_channel()
557 wake_up(&call->waitq); in rxrpc_activate_one_channel()
640 struct rxrpc_call *call, gfp_t gfp) in rxrpc_wait_for_channel() argument
645 _enter("%d", call->debug_id); in rxrpc_wait_for_channel()
654 add_wait_queue_exclusive(&call->waitq, &myself); in rxrpc_wait_for_channel()
662 switch (call->interruptibility) { in rxrpc_wait_for_channel()
672 if (READ_ONCE(call->state) != RXRPC_CALL_CLIENT_AWAIT_CONN) in rxrpc_wait_for_channel()
674 if ((call->interruptibility == RXRPC_INTERRUPTIBLE || in rxrpc_wait_for_channel()
675 call->interruptibility == RXRPC_PREINTERRUPTIBLE) && in rxrpc_wait_for_channel()
682 remove_wait_queue(&call->waitq, &myself); in rxrpc_wait_for_channel()
695 struct rxrpc_call *call, in rxrpc_connect_call() argument
704 _enter("{%d,%lx},", call->debug_id, call->user_call_ID); in rxrpc_connect_call()
708 bundle = rxrpc_prep_call(rx, call, cp, srx, gfp); in rxrpc_connect_call()
714 if (call->state == RXRPC_CALL_CLIENT_AWAIT_CONN) { in rxrpc_connect_call()
715 ret = rxrpc_wait_for_channel(bundle, call, gfp); in rxrpc_connect_call()
732 list_del_init(&call->chan_wait_link); in rxrpc_connect_call()
735 if (call->state != RXRPC_CALL_CLIENT_AWAIT_CONN) { in rxrpc_connect_call()
740 trace_rxrpc_client(call->conn, ret, rxrpc_client_chan_wait_failed); in rxrpc_connect_call()
741 rxrpc_set_call_completion(call, RXRPC_CALL_LOCAL_ERROR, 0, ret); in rxrpc_connect_call()
742 rxrpc_disconnect_client_call(bundle, call); in rxrpc_connect_call()
750 void rxrpc_expose_client_call(struct rxrpc_call *call) in rxrpc_expose_client_call() argument
752 unsigned int channel = call->cid & RXRPC_CHANNELMASK; in rxrpc_expose_client_call()
753 struct rxrpc_connection *conn = call->conn; in rxrpc_expose_client_call()
756 if (!test_and_set_bit(RXRPC_CALL_EXPOSED, &call->flags)) { in rxrpc_expose_client_call()
786 void rxrpc_disconnect_client_call(struct rxrpc_bundle *bundle, struct rxrpc_call *call) in rxrpc_disconnect_client_call() argument
795 _enter("c=%x", call->debug_id); in rxrpc_disconnect_client_call()
798 set_bit(RXRPC_CALL_DISCONNECTED, &call->flags); in rxrpc_disconnect_client_call()
803 conn = call->conn; in rxrpc_disconnect_client_call()
806 ASSERTCMP(call->call_id, ==, 0); in rxrpc_disconnect_client_call()
807 ASSERT(!test_bit(RXRPC_CALL_EXPOSED, &call->flags)); in rxrpc_disconnect_client_call()
808 list_del_init(&call->chan_wait_link); in rxrpc_disconnect_client_call()
812 cid = call->cid; in rxrpc_disconnect_client_call()
817 if (rcu_access_pointer(chan->call) != call) { in rxrpc_disconnect_client_call()
833 if (test_bit(RXRPC_CALL_EXPOSED, &call->flags)) { in rxrpc_disconnect_client_call()
834 _debug("exposed %u,%u", call->call_id, call->abort_code); in rxrpc_disconnect_client_call()
835 __rxrpc_disconnect_call(conn, call); in rxrpc_disconnect_client_call()
857 if (call->completion == RXRPC_CALL_SUCCEEDED && in rxrpc_disconnect_client_call()
858 test_bit(RXRPC_CALL_EXPOSED, &call->flags)) { in rxrpc_disconnect_client_call()
868 rcu_assign_pointer(chan->call, NULL); in rxrpc_disconnect_client_call()