diff options
Diffstat (limited to 'net/rxrpc/call_object.c')
| -rw-r--r-- | net/rxrpc/call_object.c | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/net/rxrpc/call_object.c b/net/rxrpc/call_object.c index 8f1a8f85b1f9..8aa2937b069f 100644 --- a/net/rxrpc/call_object.c +++ b/net/rxrpc/call_object.c | |||
| @@ -325,48 +325,6 @@ error: | |||
| 325 | } | 325 | } |
| 326 | 326 | ||
| 327 | /* | 327 | /* |
| 328 | * Retry a call to a new address. It is expected that the Tx queue of the call | ||
| 329 | * will contain data previously packaged for an old call. | ||
| 330 | */ | ||
| 331 | int rxrpc_retry_client_call(struct rxrpc_sock *rx, | ||
| 332 | struct rxrpc_call *call, | ||
| 333 | struct rxrpc_conn_parameters *cp, | ||
| 334 | struct sockaddr_rxrpc *srx, | ||
| 335 | gfp_t gfp) | ||
| 336 | { | ||
| 337 | const void *here = __builtin_return_address(0); | ||
| 338 | int ret; | ||
| 339 | |||
| 340 | /* Set up or get a connection record and set the protocol parameters, | ||
| 341 | * including channel number and call ID. | ||
| 342 | */ | ||
| 343 | ret = rxrpc_connect_call(rx, call, cp, srx, gfp); | ||
| 344 | if (ret < 0) | ||
| 345 | goto error; | ||
| 346 | |||
| 347 | trace_rxrpc_call(call, rxrpc_call_connected, atomic_read(&call->usage), | ||
| 348 | here, NULL); | ||
| 349 | |||
| 350 | rxrpc_start_call_timer(call); | ||
| 351 | |||
| 352 | _net("CALL new %d on CONN %d", call->debug_id, call->conn->debug_id); | ||
| 353 | |||
| 354 | if (!test_and_set_bit(RXRPC_CALL_EV_RESEND, &call->events)) | ||
| 355 | rxrpc_queue_call(call); | ||
| 356 | |||
| 357 | _leave(" = 0"); | ||
| 358 | return 0; | ||
| 359 | |||
| 360 | error: | ||
| 361 | rxrpc_set_call_completion(call, RXRPC_CALL_LOCAL_ERROR, | ||
| 362 | RX_CALL_DEAD, ret); | ||
| 363 | trace_rxrpc_call(call, rxrpc_call_error, atomic_read(&call->usage), | ||
| 364 | here, ERR_PTR(ret)); | ||
| 365 | _leave(" = %d", ret); | ||
| 366 | return ret; | ||
| 367 | } | ||
| 368 | |||
| 369 | /* | ||
| 370 | * Set up an incoming call. call->conn points to the connection. | 328 | * Set up an incoming call. call->conn points to the connection. |
| 371 | * This is called in BH context and isn't allowed to fail. | 329 | * This is called in BH context and isn't allowed to fail. |
| 372 | */ | 330 | */ |
| @@ -534,61 +492,6 @@ void rxrpc_release_call(struct rxrpc_sock *rx, struct rxrpc_call *call) | |||
| 534 | } | 492 | } |
| 535 | 493 | ||
| 536 | /* | 494 | /* |
| 537 | * Prepare a kernel service call for retry. | ||
| 538 | */ | ||
| 539 | int rxrpc_prepare_call_for_retry(struct rxrpc_sock *rx, struct rxrpc_call *call) | ||
| 540 | { | ||
| 541 | const void *here = __builtin_return_address(0); | ||
| 542 | int i; | ||
| 543 | u8 last = 0; | ||
| 544 | |||
| 545 | _enter("{%d,%d}", call->debug_id, atomic_read(&call->usage)); | ||
| 546 | |||
| 547 | trace_rxrpc_call(call, rxrpc_call_release, atomic_read(&call->usage), | ||
| 548 | here, (const void *)call->flags); | ||
| 549 | |||
| 550 | ASSERTCMP(call->state, ==, RXRPC_CALL_COMPLETE); | ||
| 551 | ASSERTCMP(call->completion, !=, RXRPC_CALL_REMOTELY_ABORTED); | ||
| 552 | ASSERTCMP(call->completion, !=, RXRPC_CALL_LOCALLY_ABORTED); | ||
| 553 | ASSERT(list_empty(&call->recvmsg_link)); | ||
| 554 | |||
| 555 | del_timer_sync(&call->timer); | ||
| 556 | |||
| 557 | _debug("RELEASE CALL %p (%d CONN %p)", call, call->debug_id, call->conn); | ||
| 558 | |||
| 559 | if (call->conn) | ||
| 560 | rxrpc_disconnect_call(call); | ||
| 561 | |||
| 562 | if (rxrpc_is_service_call(call) || | ||
| 563 | !call->tx_phase || | ||
| 564 | call->tx_hard_ack != 0 || | ||
| 565 | call->rx_hard_ack != 0 || | ||
| 566 | call->rx_top != 0) | ||
| 567 | return -EINVAL; | ||
| 568 | |||
| 569 | call->state = RXRPC_CALL_UNINITIALISED; | ||
| 570 | call->completion = RXRPC_CALL_SUCCEEDED; | ||
| 571 | call->call_id = 0; | ||
| 572 | call->cid = 0; | ||
| 573 | call->cong_cwnd = 0; | ||
| 574 | call->cong_extra = 0; | ||
| 575 | call->cong_ssthresh = 0; | ||
| 576 | call->cong_mode = 0; | ||
| 577 | call->cong_dup_acks = 0; | ||
| 578 | call->cong_cumul_acks = 0; | ||
| 579 | call->acks_lowest_nak = 0; | ||
| 580 | |||
| 581 | for (i = 0; i < RXRPC_RXTX_BUFF_SIZE; i++) { | ||
| 582 | last |= call->rxtx_annotations[i]; | ||
| 583 | call->rxtx_annotations[i] &= RXRPC_TX_ANNO_LAST; | ||
| 584 | call->rxtx_annotations[i] |= RXRPC_TX_ANNO_RETRANS; | ||
| 585 | } | ||
| 586 | |||
| 587 | _leave(" = 0"); | ||
| 588 | return 0; | ||
| 589 | } | ||
| 590 | |||
| 591 | /* | ||
| 592 | * release all the calls associated with a socket | 495 | * release all the calls associated with a socket |
| 593 | */ | 496 | */ |
| 594 | void rxrpc_release_calls_on_socket(struct rxrpc_sock *rx) | 497 | void rxrpc_release_calls_on_socket(struct rxrpc_sock *rx) |
