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) |