Lines Matching refs:call

357 					    struct rxrpc_call *call,  in rxrpc_prep_call()  argument
364 _enter("{%d,%lx},", call->debug_id, call->user_call_ID); in rxrpc_prep_call()
370 call->cong_cwnd = cp->peer->cong_cwnd; in rxrpc_prep_call()
371 if (call->cong_cwnd >= call->cong_ssthresh) in rxrpc_prep_call()
372 call->cong_mode = RXRPC_CALL_CONGEST_AVOIDANCE; in rxrpc_prep_call()
374 call->cong_mode = RXRPC_CALL_SLOW_START; in rxrpc_prep_call()
376 __set_bit(RXRPC_CALL_UPGRADE, &call->flags); in rxrpc_prep_call()
387 list_add_tail(&call->chan_wait_link, &bundle->waiting_calls); in rxrpc_prep_call()
471 struct rxrpc_call *call; in rxrpc_maybe_add_conn() local
485 call = list_first_entry(&bundle->waiting_calls, in rxrpc_maybe_add_conn()
487 if (test_bit(RXRPC_CALL_UPGRADE, &call->flags)) in rxrpc_maybe_add_conn()
518 struct rxrpc_call *call = list_entry(bundle->waiting_calls.next, in rxrpc_activate_one_channel() local
532 rxrpc_see_call(call); in rxrpc_activate_one_channel()
533 list_del_init(&call->chan_wait_link); in rxrpc_activate_one_channel()
534 call->peer = rxrpc_get_peer(conn->params.peer); in rxrpc_activate_one_channel()
535 call->conn = rxrpc_get_connection(conn); in rxrpc_activate_one_channel()
536 call->cid = conn->proto.cid | channel; in rxrpc_activate_one_channel()
537 call->call_id = call_id; in rxrpc_activate_one_channel()
538 call->security = conn->security; in rxrpc_activate_one_channel()
539 call->security_ix = conn->security_ix; in rxrpc_activate_one_channel()
540 call->service_id = conn->service_id; in rxrpc_activate_one_channel()
542 trace_rxrpc_connect_call(call); in rxrpc_activate_one_channel()
544 call->cid, call->call_id, call->debug_id, conn->debug_id); in rxrpc_activate_one_channel()
546 write_lock_bh(&call->state_lock); in rxrpc_activate_one_channel()
547 call->state = RXRPC_CALL_CLIENT_SEND_REQUEST; in rxrpc_activate_one_channel()
548 write_unlock_bh(&call->state_lock); in rxrpc_activate_one_channel()
563 chan->call_debug_id = call->debug_id; in rxrpc_activate_one_channel()
564 rcu_assign_pointer(chan->call, call); in rxrpc_activate_one_channel()
565 wake_up(&call->waitq); in rxrpc_activate_one_channel()
648 struct rxrpc_call *call, gfp_t gfp) in rxrpc_wait_for_channel() argument
653 _enter("%d", call->debug_id); in rxrpc_wait_for_channel()
662 add_wait_queue_exclusive(&call->waitq, &myself); in rxrpc_wait_for_channel()
670 switch (call->interruptibility) { in rxrpc_wait_for_channel()
680 if (READ_ONCE(call->state) != RXRPC_CALL_CLIENT_AWAIT_CONN) in rxrpc_wait_for_channel()
682 if ((call->interruptibility == RXRPC_INTERRUPTIBLE || in rxrpc_wait_for_channel()
683 call->interruptibility == RXRPC_PREINTERRUPTIBLE) && in rxrpc_wait_for_channel()
690 remove_wait_queue(&call->waitq, &myself); in rxrpc_wait_for_channel()
703 struct rxrpc_call *call, in rxrpc_connect_call() argument
712 _enter("{%d,%lx},", call->debug_id, call->user_call_ID); in rxrpc_connect_call()
716 bundle = rxrpc_prep_call(rx, call, cp, srx, gfp); in rxrpc_connect_call()
722 if (call->state == RXRPC_CALL_CLIENT_AWAIT_CONN) { in rxrpc_connect_call()
723 ret = rxrpc_wait_for_channel(bundle, call, gfp); in rxrpc_connect_call()
741 list_del_init(&call->chan_wait_link); in rxrpc_connect_call()
744 if (call->state != RXRPC_CALL_CLIENT_AWAIT_CONN) { in rxrpc_connect_call()
749 trace_rxrpc_client(call->conn, ret, rxrpc_client_chan_wait_failed); in rxrpc_connect_call()
750 rxrpc_set_call_completion(call, RXRPC_CALL_LOCAL_ERROR, 0, ret); in rxrpc_connect_call()
751 rxrpc_disconnect_client_call(bundle, call); in rxrpc_connect_call()
759 void rxrpc_expose_client_call(struct rxrpc_call *call) in rxrpc_expose_client_call() argument
761 unsigned int channel = call->cid & RXRPC_CHANNELMASK; in rxrpc_expose_client_call()
762 struct rxrpc_connection *conn = call->conn; in rxrpc_expose_client_call()
765 if (!test_and_set_bit(RXRPC_CALL_EXPOSED, &call->flags)) { in rxrpc_expose_client_call()
795 void rxrpc_disconnect_client_call(struct rxrpc_bundle *bundle, struct rxrpc_call *call) in rxrpc_disconnect_client_call() argument
804 _enter("c=%x", call->debug_id); in rxrpc_disconnect_client_call()
807 set_bit(RXRPC_CALL_DISCONNECTED, &call->flags); in rxrpc_disconnect_client_call()
812 conn = call->conn; in rxrpc_disconnect_client_call()
815 ASSERTCMP(call->call_id, ==, 0); in rxrpc_disconnect_client_call()
816 ASSERT(!test_bit(RXRPC_CALL_EXPOSED, &call->flags)); in rxrpc_disconnect_client_call()
817 list_del_init(&call->chan_wait_link); in rxrpc_disconnect_client_call()
821 cid = call->cid; in rxrpc_disconnect_client_call()
826 if (rcu_access_pointer(chan->call) != call) { in rxrpc_disconnect_client_call()
842 if (test_bit(RXRPC_CALL_EXPOSED, &call->flags)) { in rxrpc_disconnect_client_call()
843 _debug("exposed %u,%u", call->call_id, call->abort_code); in rxrpc_disconnect_client_call()
844 __rxrpc_disconnect_call(conn, call); in rxrpc_disconnect_client_call()
866 if (call->completion == RXRPC_CALL_SUCCEEDED && in rxrpc_disconnect_client_call()
867 test_bit(RXRPC_CALL_EXPOSED, &call->flags)) { in rxrpc_disconnect_client_call()
877 rcu_assign_pointer(chan->call, NULL); in rxrpc_disconnect_client_call()